2011-01-06 51 views
0
use strict 
use Spreadsheet::WriteExcel; 
my $Workbook = Spreadsheet::WriteExcel->new('cw.xls'); 
my $Worksheet = $Workbook->add_worksheet('MRD'); 

my $Formula= "A10+B10/2"; 
$Worksheet->write_formula(1,2,'='.($Formula)); 

exit; 

错误获取:如何编写公式在Excel工作表存储在perl的变量

Couldn't parse formula: =A10+B10/2; 

注:我使用跨表数据调用包含公式。 当我在Excel表格中手工粘贴它时,它的工作正常,但通过程序我无法将它放在表格中。

如果有人遇到这个问题或有解决方案,请告诉我。

+0

您需要了解`Spreadsheet:WriteExcel`库的运行方式;但猜测 - 也许你不应该把等号放在它前面。 – 2011-01-06 04:56:19

+0

除了strict之后缺少分号,这在我的机器上工作正常。 – bernie 2011-01-06 05:04:48

回答

1

如果你看到Spreadsheet::WriteExcel模块的文档,它在DIAGNOSTICS节规定:

无法解析公式...

有大量的警告,这涉及到严重形成公式和功能。有关如何避免这些错误的建议,请参阅“FORMULAS AND FUNCTIONS IN EXCEL”部分。您还应该在Excel中检查公式以确保它是有效的。

1

在变量中存储公式并将其传递给write_formula()没有任何问题。实际上你自己的代码片段证明了它的工作原理。

所以问题出在您正在尝试编写的公式上。既然你还没有发布的公式是很难猜测的问题可能是什么,但here are some formula debugging tips from the docs

  1. 验证公式在Excel(或Gnumeric的或OpenOffice.org)的作品。
  2. 确保它不在上面显示的警告列表中。 (在文档中)。
  3. 确保单元格引用和公式名称使用​​大写字母。
  4. 确保您使用':'作为范围运算符A1:A4。
  5. 确保您使用','作为并集运算符SUM(1,2,3)。
  6. 确保该功能位于上表中。 (在文档中)。

P.S.当您使用write_formula()时,不需要前导'=',因此您可以使用:

$Worksheet->write_formula(1, 2, $Formula);