如何使用Spreadsheet :: WriteExcel从数字日志数据创建图表?

时间:2010-04-23 04:15:15

标签: perl excel

我使用csv2xls.pl将文本日志转换为.xls格式,然后创建一个图表,如下所示:

my $chart3 = $workbook->add_chart( type => 'line' , embedded => 1);

# Configure the series.
$chart3->add_series(
    categories => '=Sheet1!$B$2:$B$64',
    values     => '=Sheet1!$C$2:$C$64',
    name       => 'Test data series 1',
);

# Add some labels.
$chart3->set_title( name => 'Bridge Rate Analysis' );
$chart3->set_x_axis( name => 'Packet Size ' );
$chart3->set_y_axis( name => 'BVI Rate' );

# Insert the chart into the main worksheet.
$worksheet->insert_chart( 'G2', $chart3 );

我可以在.xls文件中看到该图表。但是,所有数据都是文本格式,而不是数字格式,因此图表看起来不对。

如何在应用此创建图表功能之前将文本转换为数字?

另外,如何在创建图表之前对.xls文件进行排序?

2 个答案:

答案 0 :(得分:2)

如果Excel将数据显示为文本,则表示您已将单元格创建为文本。

您省略了csv2xls.pl中的代码,因此很难猜出确切的问题是什么。可能您使用的是Spreadsheet :: WriteExcel方法write_string()而不是write_number()或泛型write()

  

另外,如何在创建图表之前对.xls文件进行排序?

Excel文件格式没有排序选项。加载文件后,Excel将执行排序。解决方案是在使用Sreadsheet :: WriteExcel进行转换之前对输入CSV文件进行排序。

答案 1 :(得分:0)

在excel中执行此操作的方法是将其插入另一个单元格中:

=value(trim(clean(a1)))

其中a1是包含原始数据的单元格,该数据以文本形式出现。然后使用此单元格引用作为图表。

HTH