在日常办公和数据处理中,我们经常需要将 excel 文档转换为 pdf 格式。pdf 格式具有跨平台兼容性好、格式固定不易篡改、便于分享和打印等优势,因此成为文档分发的理想选择。今天我们将介绍如何使用 spire.xls for python 库来实现 excel 到 pdf 的高效转换,涵盖从基础转换到高级设置的全流程。
环境准备与安装
在开始之前,我们需要先用 pip 工具进行安装:
pip install spire.xls
免费版 (有限制):
pip install spire.xls.free
基础 excel 转 pdf 实现
让我们从最基本的转换开始,将整个 excel 工作簿转换为 pdf 文件:
from spire.xls import *
from spire.xls.common import *
# 加载 excel
workbook = workbook()
workbook.loadfromfile("sample.xlsx")
# 设置工作表自适应页面
workbook.convertersetting.sheetfittopage = true
# 转换为 pdf
workbook.savetofile("topdf.pdf", fileformat.pdf)
workbook.dispose()
这段代码实现了最基本的转换功能,主要包含三个步骤:
- 创建 workbook 对象
- 加载 excel 文件
- 保存为 pdf 格式
转换指定工作表
有时我们不需要转换整个工作簿,只需要转换其中的一个或多个工作表。spire.xls 提供了灵活的选项来实现这一点:
from spire.xls import *
from spire.xls.common import *
# 加载 excel
workbook = workbook()
workbook.loadfromfile("c:\users\administrator\desktop\input.xlsx")
# 获取指定工作表
sheet = workbook.worksheets[1]
# 设置工作表自适应页面
workbook.convertersetting.sheetfittopage = true
# 转换为 pdf
sheet.savetopdf("worksheettopdf.pdf")
workbook.dispose()
高级 pdf 转换设置
spire.xls 提供了丰富的转换选项,让我们可以自定义 pdf 的输出效果。以下是一些常用的高级设置:
设置 pdf 导出参数
- 页面方向(纵向/横向)
- 纸张大小(a4/a3)
- 页边距
- 是否显示网格线
# 获取 pagesetup 对象 pagesetup = sheet.pagesetup # 设置页面方向 pagesetup.orientation = pageorientationtype.landscape; # 设置页面大小 pagesetup.papersize = papersizetype.papera4; # 设置页边距 pagesetup.topmargin = 0.3 pagesetup.bottommargin = 0.3 pagesetup.leftmargin = 0.3 pagesetup.rightmargin = 0.3 # 显示网格线 pagesetup.isprintgridlines = true;
批量转换多个 excel 文件
当需要处理多个 excel 文件时,我们可以编写批量转换脚本:
import os
from spire.xls import *
from spire.xls.common import *
def batch_excel_to_pdf(input_dir, output_dir):
    """
    批量转换指定目录下的所有 excel 文件为 pdf
    
    参数:
        input_dir: 包含 excel 文件的目录
        output_dir: 输出 pdf 文件的目录
    """
    # 确保输出目录存在
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    
    # 获取目录下所有 excel 文件
    excel_extensions = ('.xls', '.xlsx', '.xlsm', '.xlsb')
    excel_files = [f for f in os.listdir(input_dir) 
                  if f.lower().endswith(excel_extensions)]
    
    if not excel_files:
        print(f"在 {input_dir} 中未找到 excel 文件")
        return
    
    workbook = workbook()
    
    try:
        for i, filename in enumerate(excel_files, 1):
            excel_path = os.path.join(input_dir, filename)
            # 生成输出 pdf 文件名
            pdf_filename = os.path.splitext(filename)[0] + '.pdf'
            pdf_path = os.path.join(output_dir, pdf_filename)
            
            print(f"正在转换 {i}/{len(excel_files)}: {filename}")
            
            # 加载并转换
            workbook.loadfromfile(excel_path)
            workbook.savetofile(pdf_path, fileformat.pdf)
            
            # 清空工作簿,准备下一个文件
            workbook.dispose()
            workbook = workbook()
            
            print(f"已保存: {pdf_filename}")
            
        print(f"批量转换完成,共处理 {len(excel_files)} 个文件")
        
    except exception as e:
        print(f"转换过程中出错: {str(e)}")
        
    finally:
        workbook.dispose()
# 使用示例
if __name__ == "__main__":
    input_directory = "需要转换的excel文件"  # 存放excel文件的目录
    output_directory = "转换后的pdf文件"    # 输出pdf的目录
    batch_excel_to_pdf(input_directory, output_directory)
总结
spire.xls for python 为 excel 转 pdf 提供了强大而灵活的解决方案,无论是简单的单文件转换还是复杂的批量处理,都能轻松应对。通过本文介绍的方法,你可以根据实际需求定制转换过程,获得高质量的 pdf 输出。
到此这篇关于python使用spire.xls for python轻松实现excel转pdf的完整指南的文章就介绍到这了,更多相关python excel转pdf内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
 
             我要评论
我要评论 
                                             
                                             
                                             
                                             
                                            
发表评论