gpt4 book ai didi

Perl - Spreadsheet::WriteExcel 函数解释

转载 作者:行者123 更新时间:2023-12-01 22:57:04 28 4
gpt4 key购买 nike

我想使用函数“autofit_columns”,如下所示:CPAN

这是到目前为止我的程序(我跳过了数据库连接和查询部分)

my $workbook = Spreadsheet::WriteExcel->new("TEST.xls");

my $bold = $workbook->add_format();
$bold->set_bold();
my $number = $workbook->add_format();
$number->set_num_format(0x01);
$worksheet = $workbook->add_worksheet('Sheet1');

my @headings = ('Blabla...');

foreach $i (@headings){
$worksheet->write(0, $col++, $i, $bold);
};

$col=0;
$lrow=1;
while (@row = $sth->fetchrow_array()) {
$worksheet->write($lrow,$col,\@row);
$lrow++;

};
$sth->finish;
$dbh->disconnect;

autofit_columns($worksheet);
$workbook->close();

sub autofit_columns {

my $worksheet = shift;
my $col = 0;

for my $width (@{$worksheet->{__col_widths}}) {

$worksheet->set_column($col, $col, $width) if $width;
$col++;
}
}

问题:我的列未在 xls 文件中自动调整...知道为什么吗?

我不明白这段代码:

for my $width (@{$worksheet->{__col_widths}}) {

$worksheet->set_column($col, $col, $width) if $width;
$col++;
}

最佳答案

在向工作表写入任何内容之前,您需要再次查看该示例并实现 add_write_handler 部分。

请看一下

$worksheet->add_write_handler(qr[\w], \&store_string_widths);

line 然后在 store_string_widths 子例程实现。

答案是您需要在每次写入时存储字符串的绝对宽度。然后,在将所有数据写入工作表后,您需要遍历行并找到每列的最大字符串“长度” - 这将是所需的列宽度。

祝你好运。

关于Perl - Spreadsheet::WriteExcel 函数解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792463/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com