使用perl中的Excel::Writer::XLSX正确构建电子表格

使用perl中的Excel::Writer::XLSX正确构建电子表格,excel,perl,Excel,Perl,作为一个新的perl用户,如果没有太多经验,很难理解所有内容 Bellow是perl脚本的一部分,它应该通过解析自定义软件生成的文本文件来构建电子表格。执行之后,xlsx由perl构建,产品组填充在指定列的每一行中,产品插入到下一列中。当我有太多的产品时,它们最终会被插入到给定组的下一列和下一列中。 理想情况下,我希望在同一产品列的下一行中插入多个产品 目前: ========================== 组|产品| 1 |产品| 2| =========================

作为一个新的perl用户,如果没有太多经验,很难理解所有内容

Bellow是perl脚本的一部分,它应该通过解析自定义软件生成的文本文件来构建电子表格。执行之后,xlsx由perl构建,产品组填充在指定列的每一行中,产品插入到下一列中。当我有太多的产品时,它们最终会被插入到给定组的下一列和下一列中。 理想情况下,我希望在同一产品列的下一行中插入多个产品

目前:

==========================

组|产品| 1 |产品| 2|

===========================

理想情况下:

==================

组|产品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++;

不确定您是否正在寻找解析或编写输出方面的帮助

下面是一种编写输出的方法,假设您将其解析为数组引用的散列,
group=>[product\u change,product\u 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);
    }
}

乍一看这是正确的。您确定
$key
具有您期望的功能吗?也就是说,
%product\u changes
真的有多个键吗?或者,
$key
应该放在
列中,而
{$product\u changes{$key}
中的每个元素都需要多行?