可以Spreadsheet :: WriteExcel更改单元格的格式而不修改其内容?

在我的Perl脚本中,我使用Spreadsheet :: WriteExcel模块创build一个Excel文件。 该文件包含一个表,其大小是dynamic的 – 即,我不知道有多less行,直到表已被创build。 我希望表格的最后一行有一个稍微不同的格式(例如,它的下边框是“===”)。 不幸的是,当行被创build时,我不能应用这种(不同的)格式,因为那个时候我还不知道它会是最后一行。

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

直接回答您的问题是,您不能修改Spreadsheet :: WriteExcel中已经写入的单元格的格式。 这是Excel :: Writer :: XLSX的计划function,但它还没有到位。

因此,您需要以某种方式来解决这个问题,比如缓冲表数据,直到您准备好写入数据或缓冲行,并且只有在有新行时才写入数据。

或者你可以打开compatiblilty_mode()并用新的格式化数据覆盖最后一行。 请注意,如果没有compatibility_mode(),不build议使用这种方法,因为Excel会报告文件中重复或丢失的数据。

或者,像@bvr指出的那样设置行格式可能适合你。

除非你的数据对于内存来说太大了,你可以先把你的表数据放在一个数组中,然后遍历数组输出。 您将可以访问数组中的任何元素,以便您知道最后一行的内容以及其中的数据types。

您可以使用set_row方法将格式设置为任何行而不更改数据。