我在Spreadsheet::WriteExcel和使用VLOOKUP
的公式中遇到了问题。以下测试脚本使用一些数据填充工作表并尝试创建VLOOKUP
公式。当我打开生成的Excel文件时,公式结果显示为#VALUE!
。如果我手动编辑任何包含公式的单元格(按F2,然后按ENTER键而不更改任何内容),我可以使用Excel来正确评估公式。任何想法出了什么问题?如何获得Perl的Spreadsheet :: WriteExcel以使用VLOOKUP创建公式?
对于什么是值得的,如果我在OpenOffice中打开相同的文件,公式工作正常。
use strict;
use warnings;
use Spreadsheet::WriteExcel;
my $wb = Spreadsheet::WriteExcel->new('foo.xls');
my $ws = $wb->add_worksheet;
for my $r (0 .. 9){
for my $c (0 .. 4){
$ws->write($r, $c, $r * 10 + $c);
}
$ws->write($r, 10, $r * 10);
my $formula = sprintf('=VLOOKUP(K%s, A1:B10, 2, FALSE)', $r + 1);
$ws->write($r, 11, $formula);
# $ws->write_formula($r, 11, $formula); # Does not help either.
}
版本信息:
- 的Excel 2007 SP2。
- Spreadsheet :: WriteExcel:试过2.25和2.37。
您使用的是什么版本的'Spreadsheet :: WriteExcel'?您的代码在OSX上使用Excel在2.25中正常工作。可能只是你的Excel安装? – 2010-02-09 19:34:03
确实调用了write_formula而不是写入工作? – ysth 2010-02-09 20:00:17
@ysth和@Jack M.好主意,但没有运气。我使用版本信息编辑了问题。 – FMc 2010-02-09 21:00:48