如何使用 PHPExcel 将 xlsx 文件上的可打印区域保存为 PDF
How to save the Printable Area on an xlsx file to a PDF with PHPExcel
我如何将 excel sheet 上的可打印区域保存为 PDF?
如果我需要使用不同的库,那么我可以使用它,但我需要它尽可能接近从 excel 打印时的相同外观,我知道这很难一般。
dompdf 中唯一可用的打印选项是 paper size and orientation. Further, printable area is an excel-specific directive that does not affect export to other formats。将可打印区域视为专门的标记,仅此而已。
在这种情况下,最好的选择是在转换为 pdf 之前通过循环清空或隐藏可打印区域之外的所有单元格。
假设您在 Windows 服务器上工作,我将建议一种不同的方法:使用 PHP 中可用的 COM 或 DOTNET class 库 Windows(http://php.net/manual/en/book.com.php)。如果不是,请无视我的回答,因为它不起作用。
我的想法是使用本机 Excel 宏功能 select 打印区域并使用 built-in 导出为 PDF 功能。这样,单元格格式应该保持不变。因此,您的 .xlsw 成为一个 .xlsm 文件,将所需的 VBA 代码添加到 select 适当的范围(打印区域)并导出为 PDF。然后 COM 或 DOTNET class 库将用于实例化电子表格并访问公开的对象(包括宏)。如果您无法控制电子表格本身,您也许还可以通过 COM/DOTNET 自动化来驱动导出,而不使用宏。
- Xlsx 文件 - ZIP 包 (link)
- 有关文件 'xl/workbook.xml' 中包含的可打印区域的信息。使用 php ZipArchive class 及其 ZipArchive::getFromName 方法获取 'xl/workbook.xml' 的内容
- 包含可打印区域的元素是
。使用 PHP SimpleXMLElement class 及其方法 SimpleXMLElement::xpath 从该标签中提取信息
- 何时提取有关可打印区域的信息:
- 复制 xlsx 文件
- 提取名为 'xl/worksheets/sheet1'(或类似名称)的文件
- 遍历'sheetData'部分的文件元素,删除不在可打印区域
的单元格
- 将修改后的 xml 压缩到 xlsx
的副本
- 使用 PHPExcel 或其他库转换 xlsx 文件。
我如何将 excel sheet 上的可打印区域保存为 PDF?
如果我需要使用不同的库,那么我可以使用它,但我需要它尽可能接近从 excel 打印时的相同外观,我知道这很难一般。
dompdf 中唯一可用的打印选项是 paper size and orientation. Further, printable area is an excel-specific directive that does not affect export to other formats。将可打印区域视为专门的标记,仅此而已。
在这种情况下,最好的选择是在转换为 pdf 之前通过循环清空或隐藏可打印区域之外的所有单元格。
假设您在 Windows 服务器上工作,我将建议一种不同的方法:使用 PHP 中可用的 COM 或 DOTNET class 库 Windows(http://php.net/manual/en/book.com.php)。如果不是,请无视我的回答,因为它不起作用。
我的想法是使用本机 Excel 宏功能 select 打印区域并使用 built-in 导出为 PDF 功能。这样,单元格格式应该保持不变。因此,您的 .xlsw 成为一个 .xlsm 文件,将所需的 VBA 代码添加到 select 适当的范围(打印区域)并导出为 PDF。然后 COM 或 DOTNET class 库将用于实例化电子表格并访问公开的对象(包括宏)。如果您无法控制电子表格本身,您也许还可以通过 COM/DOTNET 自动化来驱动导出,而不使用宏。
- Xlsx 文件 - ZIP 包 (link)
- 有关文件 'xl/workbook.xml' 中包含的可打印区域的信息。使用 php ZipArchive class 及其 ZipArchive::getFromName 方法获取 'xl/workbook.xml' 的内容
- 包含可打印区域的元素是
- 何时提取有关可打印区域的信息:
- 复制 xlsx 文件
- 提取名为 'xl/worksheets/sheet1'(或类似名称)的文件
- 遍历'sheetData'部分的文件元素,删除不在可打印区域 的单元格
- 将修改后的 xml 压缩到 xlsx 的副本
- 使用 PHPExcel 或其他库转换 xlsx 文件。