Perl 电子表格::WriteExcel是否可以在不修改单元格内容的情况下更改单元格的格式?

Perl 电子表格::WriteExcel是否可以在不修改单元格内容的情况下更改单元格的格式?,perl,excel,format,cpan,perl-module,Perl,Excel,Format,Cpan,Perl Module,在我的Perl脚本中,我使用该模块创建一个Excel文件。该文件包含一个表,该表的大小是动态的,也就是说,在创建该表之前,我不知道它将有多少行。我希望表格的最后一行具有稍微不同的格式(例如,其底部边框为“==”)。不幸的是,我无法在创建行时应用这种(不同的)格式,因为那时我还不知道它将是最后一行 所以,我的问题是:我能改变一个已经存在的单元格的格式而不改变它的内容吗?如果我将undef作为单元格值传递给$worksheet->write()方法,它只会用一个空白单元格覆盖单元格的内容。除非您的数

在我的Perl脚本中,我使用该模块创建一个Excel文件。该文件包含一个表,该表的大小是动态的,也就是说,在创建该表之前,我不知道它将有多少行。我希望表格的最后一行具有稍微不同的格式(例如,其底部边框为“==”)。不幸的是,我无法在创建行时应用这种(不同的)格式,因为那时我还不知道它将是最后一行


所以,我的问题是:我能改变一个已经存在的单元格的格式而不改变它的内容吗?如果我将
undef
作为单元格值传递给
$worksheet->write()
方法,它只会用一个空白单元格覆盖单元格的内容。

除非您的数据太大,无法存储,否则您可以先将表数据放入数组中,然后在数组上循环输出。首先,您可以访问数组中的任何元素,这样您就可以知道最后一行是什么,以及其中将包含什么类型的数据。

除非您的数据太大,无法存储,否则您可以先将表数据放入数组中,然后在数组上循环输出。首先,您可以访问数组中的任何元素,因此,您将知道最后一行将是什么以及其中将包含什么类型的数据。

您可以使用
set\u row
方法将格式设置为任何行,而无需更改数据。

您可以使用
set\u row
方法将格式设置为任何行,而无需更改数据。

您的问题的直接答案是您无法修改中已写入单元格的格式。这是计划中的功能,但尚未到位

因此,您需要以某种方式解决它,例如缓冲表数据,直到您准备好写入它为止,或者一次缓冲一行,并且仅在有新行时写入它

或者,您可以打开并用新的格式化数据覆盖最后一行。请注意,如果没有兼容性_mode(),则不建议使用此方法,因为Excel会抱怨文件中存在重复或丢失的数据


或者,正如@bvr所指出的,设置行格式可能对您有用。

您的问题的直接答案是您无法修改中已写入单元格的格式。这是计划中的功能,但尚未到位

因此,您需要以某种方式解决它,例如缓冲表数据,直到您准备好写入它为止,或者一次缓冲一行,并且仅在有新行时写入它

或者,您可以打开并用新的格式化数据覆盖最后一行。请注意,如果没有兼容性_mode(),则不建议使用此方法,因为Excel会抱怨文件中存在重复或丢失的数据


或者,正如@bvr所指出的,设置行格式可能对您有用。

我确实使用
兼容模式()。您的意思是我应该缓冲表的最后一行,并在表完成后用新格式再次重写它吗?不,这不符合我目前的算法。顺便说一句,我不想使用
Excel::Writer::XLSX
模块,因为我想创建Excel97样式的文件,而不是新格式的文件。好的,我接受我的问题的答案是“这是不可能的”。我确实使用了
兼容性\u mode()
。您的意思是我应该缓冲表的最后一行,并在表完成后用新格式再次重写它吗?不,这不符合我目前的算法。顺便说一句,我不想使用
Excel::Writer::XLSX
模块,因为我想创建Excel97样式的文件,而不是新格式的文件。好的,我接受我的问题的答案是“这不可能完成”。据我从文档中了解,这将设置整行的格式。这看起来非常难看。我想更改行的一部分的格式-仅更改表占用的部分。据我从文档中了解,这将设置整行的格式。这看起来非常难看。我想更改行的一部分的格式-仅更改表占用的部分。