为什么可以';t我用Perl';s电子表格::WriteExcel

为什么可以';t我用Perl';s电子表格::WriteExcel,perl,excel,charts,Perl,Excel,Charts,使用在电子表格中创建图表时,它创建的文件会不断出现读取错误 Excel在“Report.xls”中发现无法读取的内容 问我是否想找回它。我已经计算出代码中的问题行是我实际插入图表的地方,带有 $chartworksheet->insert_chart(0, 0, $linegraph, 10, 10); 如果我把这一行注释掉,数据很好(当然,没有图表)。相关代码的其余部分如下所示(此处未定义的任何变量都是在代码前面定义的,如$lastrow) 我完全不知所措,找不到任何答案。救命啊 查看

使用在电子表格中创建图表时,它创建的文件会不断出现读取错误

Excel在“Report.xls”中发现无法读取的内容

问我是否想找回它。我已经计算出代码中的问题行是我实际插入图表的地方,带有

$chartworksheet->insert_chart(0, 0, $linegraph, 10, 10);
如果我把这一行注释掉,数据很好(当然,没有图表)。相关代码的其余部分如下所示(此处未定义的任何变量都是在代码前面定义的,如
$lastrow


我完全不知所措,找不到任何答案。救命啊

查看表达式:

'=Data!$D$2:$D$lastrow'
$lastrow
电子表格::WriteExcel
中的某种约定,还是脚本中插入字符串表达式的变量?如果它是您的var,那么这段代码可能无法在单引号内实现您想要的功能,并且您可能希望使用

'=Data!$D$2:$D' . $lastrow
"=Data!\$D\$2:\$D:$lastrow"
sprintf('=Data!$D2:$D%d',$lastrow)

看看这个表达:

'=Data!$D$2:$D$lastrow'
$lastrow
电子表格::WriteExcel
中的某种约定,还是脚本中插入字符串表达式的变量?如果它是您的var,那么这段代码可能无法在单引号内实现您想要的功能,并且您可能希望使用

'=Data!$D$2:$D' . $lastrow
"=Data!\$D\$2:\$D:$lastrow"
sprintf('=Data!$D2:$D%d',$lastrow)

正如mobrule正确指出的那样,问题在于您在序列字符串上使用单引号,
$lastrow
不会被插值

使用
xl\u range\u formula()
实用程序函数以编程方式生成图表系列字符串时,可以完全避免此类问题

$chart->add_series(
    categories    => xl_range_formula( 'Sheet1', 1, 9, 0, 0 ),
    values        => xl_range_formula( 'Sheet1', 1, 9, 1, 1 ),
);

# Which is the same as:
$chart->add_series(
    categories    => '=Sheet1!$A$2:$A$10',
    values        => '=Sheet1!$B$2:$B$10',
);

有关更多详细信息,请参阅WriteExcel文档的以下部分:。

正如mobrule正确指出的那样,问题在于您在序列字符串上使用单引号,并且,
$lastrow
不会被插值

使用
xl\u range\u formula()
实用程序函数以编程方式生成图表系列字符串时,可以完全避免此类问题

$chart->add_series(
    categories    => xl_range_formula( 'Sheet1', 1, 9, 0, 0 ),
    values        => xl_range_formula( 'Sheet1', 1, 9, 1, 1 ),
);

# Which is the same as:
$chart->add_series(
    categories    => '=Sheet1!$A$2:$A$10',
    values        => '=Sheet1!$B$2:$B$10',
);

有关更多详细信息,请参阅WriteExcel文档的以下部分:。

先生(或女士),你是个天才
$lastrow
确实是前面定义的变量。我起初以为问题出在其中一行上,但不知怎的排除了它们。。。谢谢先生(或夫人),你是个天才
$lastrow
确实是前面定义的变量。我起初以为问题出在其中一行上,但不知怎的排除了它们。。。谢谢始终希望显示一个完整的工作程序来显示行为。这样帮助你容易多了。:)谢谢你的提示。我认为代码的其余部分工作正常,因此会使我的文章变得杂乱无章,但我会记住,在以后的文章中:)总是倾向于显示一个完整的工作程序来显示行为。这样帮助你容易多了。:)谢谢你的提示。我认为代码的其余部分工作正常,因此会使我的文章变得杂乱无章,但我会记住,在以后的文章中:)