【发布时间】:2013-12-16 23:09:51
【问题描述】:
作为一个新的 perl 用户,没有太多经验是很难理解所有内容的。
Bellow 是 perl 脚本的一部分,它应该通过解析自定义软件生成的文本文件来构建电子表格。执行后通过perl构建xlsx,在指定列的每一行填充产品组,在下一列插入产品。当我有太多产品时,它们最终会被插入给定组的下一列,下一列,等等。 理想情况下,我希望将多个产品插入同一产品列的下一行。
目前:
===========================
集团 |产品_1 |产品剪辑_2 |
============================
理想情况下:
===================
集团 |产品1 |
===================
(空白)|产品2 |
===================
(空白)|产品3 |
===================
这将如何实现?
下面是当前代码的sn-p:
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++;
【问题讨论】:
-
乍一看,这看起来不错。你确定
$key有你所期望的吗? IE。%product_changes真的有多个键吗?还是$key应该放在Group列中,而@{$product_changes{$key}}中的每个元素都需要多行?