【问题标题】:Perl: Spreadsheet::WriteExcel not working with PERCENTILE FORMULA IN EXCELPerl:Spreadsheet::WriteExcel 不能在 EXCEL 中使用百分比公式
【发布时间】:2011-04-20 07:18:32
【问题描述】:

下面是我的代码

使用电子表格::WriteExcel;

# Create a new Excel workbook
my $workbook = Spreadsheet::WriteExcel->new('ttif.xls');
 $workbook->compatibility_mode();
# Add a worksheet
$worksheet = $workbook->add_worksheet();

#  Add and define a format
$format = $workbook->add_format(); # Add a format
$format->set_bold();
$format->set_color('blue');
$format->set_align('center');
my $row = 2;
my $count = 1;
my $lat = '28.580022';
my $long = '77.315362';
my $alt_range = 300;
my $ttf_range = 20;
my $gps_time  = 138955387;
$worksheet->write('A1',Latitude);
$worksheet->write('B1',Longitude);
$worksheet->write('C1',Alt);
$worksheet->write('D1',TTFF);
$worksheet->write('E1','GPS Time');
while ($count <= 15725)
{
$worksheet->write("A$row",$lat);
$worksheet->write("B$row",$long);
my $random_number = int(rand($alt_range));
$worksheet->write("C$row",$random_number);
$random_number = int(rand($ttf_range));
$worksheet->write("D$row",$random_number);
$worksheet->write("E$row",$gps_time);
    $worksheet->write("H$row",$count);
$worksheet->write("I$row","=H$row/100");
$count++;
$row++;
}
my $percentile = $worksheet->store_formula('=PERCENTILE(D:D,I1)');
my $row  = 2;
my $count = 1;
while ($count <=100)
{
    $worksheet->repeat_formula("J$row",$percentile,$format,'I1',"I$row");
$count++;
$row++;
}

当我在 excel 中打开生成文件而不是显示 Percentile 结果时,它显示#VALUE!错误 请帮忙

【问题讨论】:

    标签: perl


    【解决方案1】:

    percentile() 公式(在这种情况下)没有被正确解析,你得到#VALUE 作为公式的结果。

    您可以通过如下修改 repeat_formula() 参数来解决此问题:

    $worksheet->repeat_formula( "J$row", $percentile, $format, 'I1', "I$row",
        '_ref2d' => '_ref2dV' );
    

    最后一对额外的匹配/替换标记帮助解析器为正在使用的函数选择正确的公式类。

    或者,您可以尝试Excel::Writer::XLSX 模块,它使用与Spreadsheet::WriteExcel 相同的API,但不会遇到此类公式问题,并且不需要store_formula()/repeat_formula () 性能变通方法。在您选择迁移到较新的模块之前,请阅读文档以确保它符合您的要求。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      相关资源
      最近更新 更多