正确的电子表格与Perl :: Writer :: XLSX在Perl中生成
作为一个新的perl用户,很难理解没有太多经验的一切。
Bellow是一个perl脚本的一部分,它应该通过parsing一个自定义软件生成的文本文件来构build一个电子表格。 执行后,xlsx由perl构build,产品组填充到指定列的每一行中,并将产品插入到下一列中。 当我有太多的产品时,他们最终被插入到下一列,以及下一列,并在给定的组中。 理想情况下,我希望将多个产品插入相同产品列的下一行。
目前:
==========================
Group | Product_1 | Prodcut_2 |
===========================
理想的情况是:
==================
Group | 产品1 |
==================
(空白)| 产品2 |
==================
(空白)| 产品3 |
==================
这将如何完成?
以下是当前代码的一个片段:
my $product_regex ='^Newly listed product: (.*)$'; if ($line =~ /$product_regex/) { $change = $1; if ($some_flag == 1) { $some_flag = 0; push(@{ $product_changes{$group} } , $change); } } my $format = $workbook->add_format(); $format->set_text_wrap(); my $worksheet = $workbook->add_worksheet( 'Sheet1' ); # Writing 2 column headers $worksheet->write( 0, 0, 'Group' ); $worksheet->write( 0, 1, 'Product' ); my $row; $row = 1; for my $key (sort keys %product_changes) { # To avoid evaluation from Excel, $key must be placed in quotes $worksheet->write($row, 0, $key, $format ); $worksheet->write($row, 1, $product_changes{"$key"},$format ); $row++;
不知道你是否正在寻求帮助parsing,或写输出。
假设你已经把它parsing成arrayrefs, group => [ product_change, product_change, ...]
my $row = 1; for my $key (sort keys %product_changes) { $worksheet->write($row, 0, $key, $format); for my $pc (@{$product_changes{"$key"}}) { $worksheet->write($row++, 1, $pc, $format); } }