【问题标题】:error while writing with write_row using Spreadsheet::WriteExcel使用 Spreadsheet::WriteExcel 写入 write_row 时出错
【发布时间】:2015-04-23 05:57:16
【问题描述】:

我正在使用Spreadsheet::WriteExcel 将数据写入excel。
对于我使用过的每一行 write_row()。
当我尝试编写具有数据 (=) 的行时,它会抛出错误消息:无法解析公式:=,因为 excel 将其视为公式。
我只需要使用数组作为一行写入数据,那么有什么办法可以做同样的事情吗?

下面是sn-ps的代码:

use Spreadsheet::WriteExcel;
my $workbook  = Spreadsheet::WriteExcel->new("../tmp/op.xls");
my $worksheet = $workbook->add_worksheet();
my @data = ('1','1','=',"testdata");
$worksheet->write_row("A1", \@data);         
$workbook->close();

输出:

Couldn't parse formula: = at 

【问题讨论】:

    标签: perl excel-formula spreadsheet cpan


    【解决方案1】:

    查看Spreadsheet::WriteExcel模块文档的DIAGNOSTICS部分,它声明:

    无法解析公式...

    有大量与格式错误的公式和函数有关的警告。有关如何避免这些错误的建议,请参阅"FORMULAS AND FUNCTIONS IN EXCEL" 部分。您还应该检查 Excel 中的公式以确保其有效。

    【讨论】:

    • 感谢您的回复,但我想要一些适用于 write_row() 函数并避免公式错误的东西。
    【解决方案2】:

    如果您只想在该单元格中使用等号,并且可以使用一些前导空格,这将在该行中插入一个“=”而不会出现公式错误:

    my @data = ('1','1', ' = ', "testdata");
    

    也适用于 LibreOffice Calc。

    我很好奇您打算如何在 SS 中使用 = 运算符?您可以通过取消引用包含运算符的单元格来构建动态 Excel 公式吗?我不是 Excel 专家 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 2010-11-13
      • 2011-12-01
      • 1970-01-01
      相关资源
      最近更新 更多