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

标签 excel perl

作为一个新的 perl 用户,没有太多经验是很难理解一切的。

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

目前:

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

集团 |产品_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++;

最佳答案

不确定您是否正在寻求解析或编写输出的帮助。

这是一种编写输出的方法,假设您已将其解析为 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);
    }
}

关于excel - 在 perl 中使用 Excel::Writer::XLSX 构建正确的电子表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308036/

相关文章:

perl - 在纯 Perl 中从另一个 HTTP 资源流式传输的最简单方法是什么?

regex - Perl 中前导空格的匹配和计数

vba - 右键单击 Excel 中禁用的工作表选项卡

sql-server - SQL 与 Excel 中整数到日期的转换问题

vba - 在一个范围内更有效地粘贴公式和值?

excel - 自动刷新自动过滤器 - VBA 与否

python - dbf 到 xls - 第一个非标题行未写入

mysql - 为什么 Perl 在此 Munin 脚本中重用相同的 MySQL 连接?

perl - 使用 alarm 设置读取 stdin 的超时时间

perl - 如何确定一个对象是否在 Perl 中实现了一个方法?