正确的电子表格与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); } }