Python Excel XLS或XLSX转PDF详解:七大实用转换设置

目录

使用工具

Python将Excel文件转换为PDF

Python将Excel文件转换为带页码的PDF

Python将Excel文件转换为特定页面尺寸的PDF

Python将Excel文件转换为PDF并将内容适应到一页

Python将Excel文件转换为PDF/A

Python将Excel文件中的工作表转换为单独的PDF

Python将Excel工作表中的特定单元格区域转换为PDF

转换过程中可能遇到的问题及解决方案

总结


Python Excel转PDF

在日常工作中,我们常常需要将 Excel 文件转换成 PDF 格式以便共享或打印。相比于 Excel 文件,PDF 格式具备更好的兼容性和安全性,能确保数据内容和排版不变。在本篇博客中,我们将探讨如何使用Python以编程方式将Excel XLS或XLSX文件转换为PDF,内容涵盖从基础转换到高级设置的多种方法,以满足各种使用场景的需求。此外还介绍了转换过程中可能遇到的问题及解决方案。

  • 将Excel文件转换为PDF
  • 将Excel文件转换为带页码的PDF
  • 将Excel文件转换为特定页面尺寸的PDF
  • 将Excel文件转换为PDF并将内容适应到一页
  • 将Excel文件转换为PDF/A
  • 将Excel文件中的工作表转换为单独的PDF
  • 将Excel工作表中的特定单元格区域转换为PDF
  • 转换过程中可能遇到的问题及解决方案
  • 使用工具

    要在Python中实现Excel转PDF,首先需要安装Excel文件处理库。本文所使用的库是Spire.XLS for Python,它可以通过以下pip命令进行安装:

    pip install Spire.XLS

    Python将Excel文件转换为PDF

    将Excel文件转换到PDF的过程比较简单,只需要三个步骤:

  • 创建Workbook类的对象。
  • 使用Workbook.LoadFromFile()方法打开Excel XLS或XLSX文件。
  • 使用Workbook.SaveToFile()方法将Excel文件保存为PDF。
  • 实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel XLS或XLSX文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    # workbook.LoadFromFile("测试.xls")
    
    # 将Excel文件转换为PDF格式
    workbook.SaveToFile("Excel转PDF.pdf", FileFormat.PDF)
    workbook.Dispose()
    

    Python将Excel文件转换为带页码的PDF

    对于内容较长的文档,添加页码可以显著提高导航和可读性。将Excel文件转换为带页码的PDF不仅能帮助读者快速找到所需信息,还能使文档看起来更为专业。

    下面是将Excel文件转换为带页码的PDF的具体步骤:

  • 创建Workbook类的对象。
  • 使用Workbook.LoadFromFile()方法打开Excel XLS或XLSX文件。
  • 循环遍历Excel文件中的工作表,并使用Worksheet.PageSetup.CenterFooter属性在每个工作表的页脚中间位置插入页码。
  • 使用Workbook.SaveToFile()方法将Excel文件保存为带页码的PDF。
  • 实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel XLS或XLSX文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 遍历文件中的每个工作表
    for sheet in workbook.Worksheets:
        # 在每个工作表的页脚中间位置插入页码,格式为 “第X页,共Y页”
        sheet.PageSetup.CenterFooter = "第 &P 页,共 &N 页"    
    
    # 将Excel文件转换为带页码的PDF格式
    workbook.SaveToFile("Excel转换为带页码的PDF.pdf", FileFormat.PDF)
    workbook.Dispose()
    

    Python将Excel文件转换为特定页面尺寸的PDF

    在某些情况下,用户可能需要将Excel文件转换为具有特定页面尺寸的PDF,以满足打印或展示的要求。

    在Spire.XLS for Python中,我们可以通过两种方式设置工作表的页面尺寸:

  • 标准页面尺寸:使用Worksheet.PageSetup.PaperSize属性选择预定义的页面尺寸(如A4、A3等)。
  • 自定义页面尺寸:使用Worksheet.PageSetup.SetCustomPaperSize()方法自定义页面尺寸;在该方法中,我们可以手动指定页面的宽度和高度。
  • 下面是将Excel文件转换为特定页面尺寸的PDF的实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 遍历文件中的每个工作表
    for sheet in workbook.Worksheets:
        # 将每个工作表的页面尺寸设置为A3标准页面尺寸
        sheet.PageSetup.PaperSize = PaperSizeType.PaperA3  
        # 或将每个工作表的页面尺寸设置为自定义页面尺寸
        # sheet.PageSetup.SetCustomPaperSize(500, 500)  
    
    # 将Excel文件转换为PDF格式
    workbook.SaveToFile("Excel转换为特定页面尺寸的PDF.pdf", FileFormat.PDF)
    workbook.Dispose()
    

    Python将Excel文件转换为PDF并将内容适应到一页

    将Excel文件转换为PDF并确保内容适应到一页是处理大型电子表格时的理想选择。这种方法可以有效地缩放数据,以避免信息分布在多页上,从而提高可读性和整洁度。

    通过Worksheet.PageSetup.FitToPagesTallWorksheet.PageSetup.FitToPagesWide属性,我们可以将Excel工作表的内容适应到1页高度和1页宽度。

    实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 遍历文件中的每个工作表
    for sheet in workbook.Worksheets:
        # 将工作表内容适应1页高度
        sheet.PageSetup.FitToPagesTall = 1
        # 将工作表内容适应1页宽度
        sheet.PageSetup.FitToPagesWide = 1   
    
    # 将Excel文件转换为PDF格式
    workbook.SaveToFile("Excel转PDF并适应页面.pdf", FileFormat.PDF)
    workbook.Dispose()
    

    Python将Excel文件转换为PDF/A

    PDF/A是一种专为长期存档设计的PDF格式,确保文档在未来的可读性和完整性。将Excel文件转换为PDF/A能够满足行业标准,确保文件中嵌入的字体、元数据和数字签名等信息得到妥善保存。这对于需要遵循严格合规性的行业尤为重要,如金融和法律领域。

    使用Spire.XLS for Python,我们可以将Excel文件转换为多种PDF/A格式,包括:

  • PDF/A-1a
  • PDF/A-1b
  • PDF/A-2a
  • PDF/A-2b
  • PDF/A-3a
  • PDF/A-3b
  • 下面是将Excel文件转换为PDF/A-1a格式的实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 指定PDF/A标准为PDF/A-1a
    workbook.ConverterSetting.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1A
    
    # 将Excel文件转换为PDF/A-1a格式
    workbook.SaveToFile("Excel转换PDFA.pdf", FileFormat.PDF)
    workbook.Dispose()
    

    Python将Excel文件中的工作表转换为单独的PDF

    在需要单独分享Excel文件的每个工作表时,将它们转换为单独的PDF文件是一种有效的解决方案。

    使用Spire.XLS for Python提供的Worksheet.SaveToPdf()方法,我们可以将Excel文件的工作表转换为单独的PDF文件。

    实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 遍历文件中的工作表
    for sheet in workbook.Worksheets:
        fileName =  sheet.Name + ".pdf"
        # 将每个工作表保存为单独的PDF
        sheet.SaveToPdf(fileName)
    workbook.Dispose()
    

    Python将Excel工作表中的特定单元格区域转换为PDF

    有时,用户可能只希望将Excel工作表中的特定单元格区域转换为PDF,而不是整个工作表。这种选项允许用户精确控制所共享或打印的数据,确保只包含最相关的信息。通过定义打印区域,用户可以轻松生成仅包含所需数据的PDF文档,提升文件的专业性和针对性。

    通过Worksheet.PageSetup.PrintArea属性,我们可以控制需要转换为PDF的单元格区域。

    实现代码:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 获取第一个工作表
    worksheet = workbook.Worksheets[0]
    
    # 指定需要转换的单元格区域
    worksheet.PageSetup.PrintArea = "A1:C5"
    
    # 将指定的单元格区域保存为PDF
    worksheet.SaveToPdf("单元格区域转PDF.pdf")
    workbook.Dispose()
    

    转换过程中可能遇到的问题及解决方案

    Spire.XLS在转换时会在系统中查找Excel文档中所使用的字体来绘制PDF。如果没有找到一样的字体,则会使用近似字体进行绘制。如果近似字体也没有,则可能会抛出字体缺失异常。因此,如果 PDF 字体显示异常,或出现缺少字体错误,我们需要检查系统中是否安装了Excel文档中所使用的字体。如果不想安装字体,可以将字体文件放在一个具有访问权限的文件夹下,然后通过代码指定字体文件夹的路径:

    from spire.xls import *
    from spire.xls.common import *
    
    # 打开Excel文件
    workbook = Workbook()
    workbook.LoadFromFile("测试.xlsx")
    
    # 指定字体文件夹的路径
    workbook.CustomFontFileDirectory= [("Fonts/")]
    
    # 将Excel文件转换为PDF
    workbook.SaveToFile(“Excel转PDF指定字体路径.pdf”, FileFormat.PDF)
    workbook.Dispose()
    

    总结

    由于篇幅有限,本文仅介绍了七种转换设置。实际上,还有许多其他选项可供选择,例如调整或删除Excel工作表的页边距(如worksheet.PageSetup.LeftMargin = 0),以改变PDF页面边缘的空白区域宽度。

    本文完结。

    作者:nuclear2011

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Excel XLS或XLSX转PDF详解:七大实用转换设置

    发表回复