2011-04-20 46 views
1

以下是我的代码Perl:电子表格:: WriteExcel不能与EXCEL中的PERCENTILE FORMULA配合使用

use Spreadsheet :: 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中打开生成文件而不是显示百分点结果时,它显示#VALUE!错误 请帮忙

回答

0

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

可以通过修改repeat_formula()的参数如下修复:在端

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

额外一对匹配的/替换令牌帮助解析器选择了正确的公式类用于在使用中的功能。

或者,你可以尝试Excel::Writer::XLSX模块,使用相同的API Spreadsheet::WriteExcel但不与公式遭受这种类型的问题,并且不需要store_formula()/ repeat_formula()性能的解决办法。在选择迁移到较新的模块之前阅读文档,以确保它符合您的要求。

相关问题