gpt4 book ai didi

excel - Spreadsheet::WriteExcel - 尽管单元格格式设置为文本,但值更改为科学计数法

转载 作者:行者123 更新时间:2023-12-04 19:55:13 25 4
gpt4 key购买 nike

我正在使用 Perl Spreadsheet::WriteExcel模块来创建 .xls 电子表格(我知道 Excel::Writer::XLSX ,但我需要保留 .xls 格式以实现向后兼容性),并且某些单元格未正确写入。有几个单元格的值格式为 1E## ,Excel 默认将其解释为科学计数法。为了解决这个问题,我使用 set_num_format('@')强制单元格格式为纯文本,但它不起作用。如果我在生成工作簿后查看 Excel 中的单元格格式,它已按我的预期设置为“文本”,但值仍更改为 1E+## 形式的数字。 .

所使用格式的声明:

my $formatRS = $workbook->add_format();
$formatRS->set_align('right');
$formatRS->set_align('top');
$formatRS->set_text_wrap();
$formatRS->set_size(8);
$formatRS->set_num_format('@');

my $formatLS = $workbook->add_format();
$formatLS->set_align('left');
$formatLS->set_align('top');
$formatLS->set_text_wrap();
$formatLS->set_size(8);
$formatLS->set_num_format('@');

写入数据:

$worksheet2->write($row, 0, "$Eq->[0]",  $formatRS);
$worksheet2->write($row, 1, "$Eq->[1]", $formatLS);
$worksheet2->write($row, 2, "$Eq->[2]", $formatLS);

在数据写入点处中断显示 @Eq数组仍然包含正确的值,并且工作表之后不会被修改。有什么办法可以阻止数据像这样被破坏吗?

编辑:编写了一个快速脚本来演示该问题。这将创建一个包含三个单元格的工作簿。第一个值将被保留,但第二个和第三个值将转换为数字,尽管单元格格式设置为文本。

use Spreadsheet::WriteExcel;

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

my $format = $workbook->add_format();
$format->set_num_format('@');

my $worksheet1 = $workbook->add_worksheet('sheet');

$worksheet1->write(0, 0, "1E10B", $format);
$worksheet1->write(0, 1, "1E37", $format);
$worksheet1->write(0, 2, "1E10", $format);

最佳答案

write 更改为 write_string 对我有用:

$worksheet1->write_string(0, 0, "1E10B", $format);
$worksheet1->write_string(0, 1, "1E37", $format);
$worksheet1->write_string(0, 2, "1E10", $format);

我在 Excel 中看到 1E37

Spreadsheet::WriteExcelwrite 中提到了这一点:

the write() method acts as a general alias for several more specificmethods

The general rule is that if the data looks like a something then asomething is written.

我怀疑它看到 1E37 并认为它看起来更像是数字而不是字符串,因此它使用 write_number 并将其转换为数字。

关于excel - Spreadsheet::WriteExcel - 尽管单元格格式设置为文本,但值更改为科学计数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65600639/

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