【问题标题】:How to get cell formats from XLSX files in Perl?如何从 Perl 中的 XLSX 文件中获取单元格格式?
【发布时间】:2020-03-13 07:45:45
【问题描述】:

我能够在 .xls 文件解析器中找到 $cell->get_format() 或 $cell->format _hash 但不适用于 xlsx 格式。我也愿意使用任何 XLSX 解析器来阅读电子表格。基本上我将一个电子表格复制到另一个保留格式。

我是 Perl 的新手,如果它非常基础,请多多包涵。下面的代码可以很好地将 excel 值复制到另一个。我在复制格式时遇到问题。我需要从读取文件中复制格式值,然后将其分配给写入单元格-self 是需要更改的变量。

我之前问过的问题 How to copy the format of the .xlsx cell using "Excel::Writer::XLSX" reader to the copied cell using "Spreadsheet::WriteExcel" writer? 如果这不是复制单元格格式的权利,我对任何其他 XLSX 解析器持开放态度。

【问题讨论】:

    标签: excel perl


    【解决方案1】:

    这些模块无法就地修改电子表格,因此您需要阅读器和编写器。要读取 XLSX 文件,请使用 Spreadsheet::ParseXLSX,它实现与 Spreadsheet::ParseExcel 相同的方法,但解析 XLSX 文件,因此其单元格也有 get_format,它返回属性 listed here。要编写新的电子表格,请使用 Excel::Writer::XLSX,它实现与 Spreadsheet::WriteExcel 相同的方法,但会创建 XLSX 文件。您可以将格式添加到 described here 这样的新工作表中。

    【讨论】:

    • 我应该用什么代替“CELL_FORMAT”来复制单元格的格式:- $sheet_write->write($row, $col,$cell -> value,"CELL_FORMAT");如果我使用 $sheet_write->write($row, $col,$cell -> value,call->get_format(); 那么我得到错误并且无法打开生成的 .XLSX 文件。
    • 您不能直接从解析器使用格式对象。您必须使用 ->add_format 在新工作表中创建格式,然后您可以传递该格式对象。
    • @Grinnz 请在下面查看我的答案。虽然我仍然收到损坏的 .xlsx 输出文件。
    • 我可以复制 $format= $cell->get_format();将此“my $format = $excel_2->add_format()”添加到我的代码后。
    • 没有。对于要从​​源文件中使用的每种格式,您必须将格式添加到工作表中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多