Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl-电子表格::WriteExcel函数说明_Perl_Excel_Module - Fatal编程技术网

Perl-电子表格::WriteExcel函数说明

Perl-电子表格::WriteExcel函数说明,perl,excel,module,Perl,Excel,Module,我想使用函数“autofit_columns”,如下所示: 这是我到目前为止的程序(我跳过了数据库连接和查询部分) 问题:我的列未在xls文件中自动拟合。。。知道为什么吗 我不明白代码的含义: for my $width (@{$worksheet->{__col_widths}}) { $worksheet->set_column($col, $col, $width) if $width; $col++;

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

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

问题:我的列未在xls文件中自动拟合。。。知道为什么吗

我不明白代码的含义:

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

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

在将任何内容写入工作表之前,您需要再次查看该示例并实现
add\u write\u handler
part

请看一看

$worksheet->add_write_handler(qr[\w], \&store_string_widths);
行,然后在
存储字符串宽度处执行子例程

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


祝您好运。

您缺少示例代码中添加回调函数的部分:

$worksheet->add_write_handler(qr[\w], \&store_string_widths);
您还缺少
store\u string\u widths()
函数

关于第二个问题,回调函数存储用于每列的最大字符串长度。代码段使用这些长度为存储长度的第一列到最后一列的每列设置列宽。如果列未存储autfit宽度,则不会调整其宽度


这是电子表格::WriteExcel中的一个小问题。它将更多地集成到Excel::Writer::XLSX中的模块中,该模块是WriteExcel的替代品。

+1用于Excel::Writer::XLSX。我喜欢你投入的工作,请继续努力。嗨,是的,谢谢你。。。后来我发现我遗漏了一半的代码。这是一个非常有趣的一天,我挣扎了很多,但最终得出了一个很好的报告。我认为先从电子表格::Excel开始会更安全,但我将看一看XLSX模块。一些客户仍在使用旧版本的Excel,因此目前它仍是最佳选择。谢谢
$worksheet->add_write_handler(qr[\w], \&store_string_widths);