最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Spire.XLS for Python實現(xiàn)將Excel轉換為PDF

 更新時間:2026年05月19日 11:29:26   作者:Metaphor692  
在日常辦公和數(shù)據(jù)處理工作中,將 Excel 電子表格轉換為 PDF 格式是一項常見且重要的需求,下面我們就來看如何使用 Spire.XLS for Python 庫將 Excel 工作簿轉換為 PDF 格式吧

在日常辦公和數(shù)據(jù)處理工作中,將 Excel 電子表格轉換為 PDF 格式是一項常見且重要的需求。PDF 格式具有跨平臺兼容性、不易被修改、保持固定布局等優(yōu)勢,使其成為分享報表、發(fā)票、數(shù)據(jù)匯總等文檔的理想選擇。通過程序化方式實現(xiàn) Excel 到 PDF 的轉換,可以大幅提升工作效率,特別是在需要批量處理大量文件時。

本文將詳細介紹如何使用 Spire.XLS for Python 庫將 Excel 工作簿轉換為 PDF 格式。我們將涵蓋基本轉換、頁面適配設置、指定范圍轉換、以及批量處理等多種場景,幫助你構建完整的 Excel 轉 PDF 解決方案。

環(huán)境準備

在開始之前,你需要安裝 Spire.XLS for Python 庫??梢允褂?pip 命令進行安裝:

pip install Spire.XLS

安裝完成后,你就可以在 Python 項目中使用該庫來操作 Excel 文檔并進行格式轉換了。

Excel 轉 PDF 的應用場景

在實際工作中,Excel 轉 PDF 有多種典型應用場景:

  • 報表分發(fā):將財務報表、銷售數(shù)據(jù)轉換為 PDF 后發(fā)送給相關人員
  • 文檔歸檔:將重要電子表格存檔為不可篡改的 PDF 格式
  • 打印準備:確保在不同設備上打印時保持一致的布局和格式
  • 客戶交付:向客戶提供格式固定的發(fā)票、報價單或對賬單
  • 合規(guī)要求:某些行業(yè)要求以 PDF/A 等標準格式保存文檔

Spire.XLS for Python 提供了豐富的 API 來滿足這些不同的轉換需求,讓你能夠靈活控制轉換過程中的各種參數(shù)。

基本的 Excel 轉 PDF 轉換

最基礎的轉換操作是將整個 Excel 工作簿保存為 PDF 格式。以下示例展示了如何完成這一基本任務:

from spire.xls import *
from spire.xls.common import *

def ConvertExcelToPDF():
    """將 Excel 工作簿轉換為 PDF"""
    inputFile = "/input/Population.xlsx"
    outputFile = "/output/ToPDF.pdf"
    
    # 創(chuàng)建工作簿對象
    workbook = Workbook()
    
    # 加載 Excel 文件
    workbook.LoadFromFile(inputFile)
    
    # 設置工作表適配頁面(確保內容完整顯示)
    workbook.ConverterSetting.SheetFitToPage = True
    
    # 保存為 PDF 格式
    workbook.SaveToFile(outputFile, FileFormat.PDF)
    workbook.Dispose()
    
if __name__ == "__main__":
    ConvertExcelToPDF()

在這個示例中,我們首先創(chuàng)建一個 Workbook 對象并加載 Excel 文件。關鍵的一步是設置 ConverterSetting.SheetFitToPage = True,這個選項會確保工作表內容自動適配到 PDF 頁面中,避免內容被截斷。最后調用 SaveToFile() 方法并指定 FileFormat.PDF 即可完成轉換。

這種基本轉換適用于大多數(shù)常規(guī)場景,能夠快速將整個工作簿(包括所有工作表)轉換為單個 PDF 文件。

優(yōu)化頁面布局:自適應寬度轉換

當 Excel 工作表包含較多列時,直接轉換可能導致內容被分割到多個頁面上。為了避免這種情況,我們可以設置頁面布局,讓所有內容在寬度上適配到一頁內,而高度則根據(jù)內容自動延伸。以下是具體實現(xiàn):

from spire.xls import *
from spire.xls.common import *

def FitWidthWhenConvertToPDF():
    """轉換時讓內容寬度適配到一頁"""
    inputFile = "./Demos/Data/SampleB_2.xlsx"
    outputFile = "FitWidthWhenConvertToPDF.pdf"
    
    # 加載 Excel 文件
    workbook = Workbook()
    workbook.LoadFromFile(inputFile)
    
    # 遍歷所有工作表,設置頁面適配
    for sheet in workbook.Worksheets:
        # 設置高度不限制(0 表示自動)
        sheet.PageSetup.FitToPagesTall = 0
        # 設置寬度適配到 1 頁
        sheet.PageSetup.FitToPagesWide = 1
    
    # 保存為 PDF
    workbook.SaveToFile(outputFile, FileFormat.PDF)
    workbook.Dispose()
    
    print(f"寬度適配轉換完成,PDF 文件已保存至: {outputFile}")

if __name__ == "__main__":
    FitWidthWhenConvertToPDF()

這個示例的關鍵在于設置每個工作表的 PageSetup 屬性。FitToPagesWide = 1 表示將所有列壓縮到一頁寬度內,而 FitToPagesTall = 0 表示高度不受限制,會根據(jù)內容自動分頁。這種設置特別適合寬表格的轉換,能夠確保每行數(shù)據(jù)完整顯示在同一頁上,提高可讀性。

轉換指定的單元格范圍

有時你只需要將 Excel 中的特定區(qū)域轉換為 PDF,而不是整個工作表。這種情況下,可以先將目標區(qū)域復制到新工作表,然后僅轉換該工作表。以下示例演示了這一技巧:

from spire.xls import *
from spire.xls.common import *

def ConvertSelectedRangeToPDF():
    inputFile = "/input/Population.xlsx"
    outputFile = "/output/SelectedRangeToPDF.pdf"
    
    # 加載原始 Excel 文件
    source_workbook = Workbook()
    source_workbook.LoadFromFile(inputFile)
    source_sheet = source_workbook.Worksheets[0] # 獲取第一個工作表
    
    # 創(chuàng)建一個全新的、干凈的臨時 Workbook
    target_workbook = Workbook()
    target_workbook.CreateEmptySheets(1) # 嚴格控制:只創(chuàng)建 1 個工作表
    target_sheet = target_workbook.Worksheets[0]
    
    # 復制指定區(qū)域 (A4:E9) 到新 Workbook 的 A4:E9
    source_sheet.Range["A4:E9"].Copy(
        target_sheet.Range["A4:E9"], 
        False,  # 不復制公式
        True    # 復制格式
    )
    
    # 自動調整列寬
    target_sheet.Range["A4:E9"].AutoFitColumns()
    
    # 保存這個單獨的 Workbook 為 PDF
    target_workbook.SaveToFile(outputFile, FileFormat.PDF)
    
    source_workbook.Dispose()
    target_workbook.Dispose()

if __name__ == "__main__":
    ConvertSelectedRangeToPDF()

這個方法通過以下步驟實現(xiàn)范圍轉換:首先創(chuàng)建一個新工作表作為臨時容器,然后將目標區(qū)域復制過去,接著自動調整列寬以確保內容正確顯示,最后僅轉換這個新工作表。這種方式非常靈活,你可以輕松修改復制的區(qū)域范圍來滿足不同的需求。

將每個工作表轉換為獨立的 PDF 文件

在某些場景下,你可能需要將一個 Excel 文件中的每個工作表分別轉換為單獨的 PDF 文件。這在處理包含多個獨立報表的工作簿時特別有用。以下是實現(xiàn)方法:

from spire.xls import *
from spire.xls.common import *

def ConvertEachWorksheetToSeparatePDF():
    """將每個工作表轉換為獨立的 PDF 文件"""
    inputFile = "./Demos/Data/EachWorksheetToDifferentPDFSample.xlsx"
    
    # 加載 Excel 文件
    workbook = Workbook()
    workbook.LoadFromFile(inputFile)
    
    # 遍歷所有工作表
    for sheet in workbook.Worksheets:
        # 使用工作表名稱作為 PDF 文件名
        FileName = sheet.Name + ".pdf"
        
        # 將當前工作表單獨保存為 PDF
        sheet.SaveToPdf(FileName)
        
        print(f"工作表 '{sheet.Name}' 已轉換為 {FileName}")
    
    workbook.Dispose()
    print("所有工作表轉換完成")

if __name__ == "__main__":
    ConvertEachWorksheetToSeparatePDF()

這個示例展示了如何使用 sheet.SaveToPdf() 方法直接將單個工作表轉換為 PDF。通過遍歷 workbook.Worksheets 集合,我們可以為每個工作表生成獨立的 PDF 文件,并以工作表名稱命名輸出文件。這種方法非常適合批量處理包含多個獨立報表的工作簿。

轉換為 PDF/A 標準格式

對于需要長期歸檔或符合特定行業(yè)標準的文檔,PDF/A 格式是一個更好的選擇。PDF/A 是 ISO 標準化的 PDF 子集,專為電子文檔的長期保存而設計。以下是如何將 Excel 轉換為 PDF/A-1B 格式的示例:

from spire.xls import *
from spire.xls.common import *

def ConvertToPDFA1B():
    """將 Excel 轉換為 PDF/A-1B 標準格式"""
    inputFile = "./Demos/Data/ToPDF_A1BExample.xlsx"
    outputFile = "ToPDFA1B.pdf"
    
    # 創(chuàng)建工作簿并加載文件
    workbook = Workbook()
    workbook.LoadFromFile(inputFile)
    
    # 設置 PDF 一致性級別為 PDF/A-1B
    workbook.ConverterSetting.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1B
    
    # 保存為 PDF
    workbook.SaveToFile(outputFile, FileFormat.PDF)
    workbook.Dispose()
    
    print(f"PDF/A-1B 文件已保存至: {outputFile}")

if __name__ == "__main__":
    ConvertToPDFA1B()

通過設置 ConverterSetting.PdfConformanceLevel 屬性,你可以指定輸出的 PDF 遵循的標準。Pdf_A1B 是最常用的 PDF/A 級別之一,它確保文檔在所有兼容的閱讀器中都能正確顯示,并且適合長期存檔。其他可用的選項還包括 Pdf_A2B、Pdf_A3B 等,你可以根據(jù)具體需求選擇合適的標準。

實用技巧與高級應用

從 CSV 文件轉換為 PDF

除了標準的 Excel 文件格式,Spire.XLS 還支持直接從 CSV 文件轉換為 PDF。這在處理導出數(shù)據(jù)時非常有用:

from spire.xls import *
from spire.xls.common import *

def ConvertCSVToPDF():
    """將 CSV 文件轉換為 PDF"""
    inputFile = "./Demos/Data/CSVSample.csv"
    outputFile = "CSVToPDF.pdf"
    
    # 創(chuàng)建工作簿并加載 CSV 文件
    workbook = Workbook()
    # 加載 CSV,指定分隔符為逗號,起始行為 1,起始列為 1
    workbook.LoadFromFile(inputFile, ",", 1, 1)
    
    # 設置工作表適配頁面
    workbook.ConverterSetting.SheetFitToPage = True
    
    # 獲取第一個工作表
    sheet = workbook.Worksheets[0]
    
    # 自動調整所有列的寬度
    i = 1
    while i < sheet.Columns.Length:
        sheet.AutoFitColumn(i)
        i += 1
    
    # 保存為 PDF
    workbook.SaveToFile(outputFile, FileFormat.PDF)
    workbook.Dispose()
    
    print(f"CSV 轉 PDF 完成,文件已保存至: {outputFile}")

if __name__ == "__main__":
    ConvertCSVToPDF()

這個示例展示了如何加載 CSV 文件并進行格式化處理后轉換為 PDF。LoadFromFile() 方法的第二個參數(shù)指定分隔符(這里是逗號),后面兩個參數(shù)指定數(shù)據(jù)的起始行和起始列。加載后,通過 AutoFitColumn() 方法自動調整每列的寬度,確保內容完整顯示。

批量轉換工具類

在實際項目中,你可能需要批量處理多個 Excel 文件。以下是一個實用的批量轉換工具類:

import os
from spire.xls import *
from spire.xls.common import *

class ExcelToPdfConverter:
    """Excel 轉 PDF 批量轉換器"""
    
    def __init__(self, output_folder=None):
        self.output_folder = output_folder or "./PDF_Output"
        
        # 創(chuàng)建輸出文件夾
        if not os.path.exists(self.output_folder):
            os.makedirs(self.output_folder)
    
    def convert_single_file(self, input_file, output_file=None, fit_to_page=True):
        """轉換單個 Excel 文件為 PDF"""
        try:
            workbook = Workbook()
            workbook.LoadFromFile(input_file)
            
            if fit_to_page:
                workbook.ConverterSetting.SheetFitToPage = True
            
            if output_file is None:
                base_name = os.path.splitext(os.path.basename(input_file))[0]
                output_file = os.path.join(self.output_folder, f"{base_name}.pdf")
            
            workbook.SaveToFile(output_file, FileFormat.PDF)
            workbook.Dispose()
            
            print(f"? 轉換成功: {os.path.basename(input_file)}")
            return True
            
        except Exception as e:
            print(f"? 轉換失敗 {os.path.basename(input_file)}: {str(e)}")
            return False
    
    def batch_convert(self, input_folder, file_extension=".xlsx"):
        """批量轉換文件夾中的所有 Excel 文件"""
        excel_files = []
        
        # 查找所有 Excel 文件
        for filename in os.listdir(input_folder):
            if filename.lower().endswith(file_extension):
                excel_files.append(os.path.join(input_folder, filename))
        
        if not excel_files:
            print(f"在 {input_folder} 中未找到 {file_extension} 文件")
            return
        
        print(f"找到 {len(excel_files)} 個文件,開始轉換...")
        
        success_count = 0
        fail_count = 0
        
        for excel_file in excel_files:
            if self.convert_single_file(excel_file):
                success_count += 1
            else:
                fail_count += 1
        
        print(f"\n轉換完成!")
        print(f"成功: {success_count} 個文件")
        print(f"失敗: {fail_count} 個文件")
        print(f"輸出目錄: {self.output_folder}")
    
    def convert_with_custom_settings(self, input_file, output_file, 
                                     fit_wide=True, fit_tall=0):
        """使用自定義頁面設置進行轉換"""
        workbook = Workbook()
        workbook.LoadFromFile(input_file)
        
        # 設置頁面適配
        for sheet in workbook.Worksheets:
            sheet.PageSetup.FitToPagesWide = 1 if fit_wide else 0
            sheet.PageSetup.FitToPagesTall = fit_tall
        
        workbook.SaveToFile(output_file, FileFormat.PDF)
        workbook.Dispose()
        
        print(f"自定義設置轉換完成: {output_file}")

def main():
    # 示例 1: 批量轉換
    converter = ExcelToPdfConverter("./PDF_Output")
    converter.batch_convert("./Excel_Files", ".xlsx")
    
    # 示例 2: 單個文件轉換
    # converter.convert_single_file("./Data/Report.xlsx")
    
    # 示例 3: 自定義設置轉換
    # converter.convert_with_custom_settings(
    #     "./Data/WideTable.xlsx",
    #     "./Output/WideTable.pdf",
    #     fit_wide=True,
    #     fit_tall=0
    # )

if __name__ == "__main__":
    main()

這個工具類提供了多種轉換方法,支持單文件轉換、批量轉換以及自定義頁面設置。你可以根據(jù)實際需求選擇合適的方法,并將其集成到自動化工作流中。

轉換質量優(yōu)化建議

為了獲得最佳的 PDF 輸出效果,注意以下幾點:

頁面設置

  • 根據(jù)內容特點選擇合適的頁面方向(橫向或縱向)
  • 使用 FitToPagesWideFitToPagesTall 控制分頁
  • 適當設置頁邊距,避免內容過于擁擠

字體和格式

  • 確保使用的字體在目標系統(tǒng)上可用
  • 檢查特殊字符和符號是否正確顯示
  • 驗證顏色和圖片在 PDF 中的呈現(xiàn)效果

性能考慮

  • 大文件轉換時考慮內存使用情況
  • 批量處理時使用循環(huán)而非一次性加載所有文件
  • 轉換完成后及時調用 Dispose() 釋放資源

常見問題與解決方案

問題 1:轉換后的 PDF 內容被截斷

解決方案:啟用 SheetFitToPage 或設置 FitToPagesWideFitToPagesTall 屬性,確保內容適配頁面。

問題 2:中文或其他特殊字符顯示異常

解決方案:確保 Excel 文件中使用了正確的字體,并且在轉換環(huán)境中安裝了這些字體??梢栽谵D換前檢查字體嵌入設置。

問題 3:轉換速度慢

解決方案:對于大型工作簿,可以考慮只轉換必要的工作表,或者先將數(shù)據(jù)拆分到多個小文件中再分別轉換。

總結

掌握這些技能后,你可將其無縫應用于自動化報表生成、文檔管理系統(tǒng)及數(shù)據(jù)歸檔等場景。通過靈活控制轉換細節(jié),不僅能大幅提升辦公自動化效率,更能確保輸出文檔的專業(yè)與規(guī)范,讓數(shù)據(jù)呈現(xiàn)更加高效、精準。

以上就是Python使用Spire.XLS for Python實現(xiàn)將Excel轉換為PDF的詳細內容,更多關于Python Excel轉PDF的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Python網(wǎng)絡框架Django和Scrapy安裝指南

    詳解Python網(wǎng)絡框架Django和Scrapy安裝指南

    這篇文章主要介紹了詳解Python網(wǎng)絡框架Django和Scrapy安裝指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Python使用execjs模塊運行JavaScript代碼

    Python使用execjs模塊運行JavaScript代碼

    在編程中,Python和JavaScript是兩種使用廣泛的編程語言,本文將深入探索如何通過execjs模塊在Python中運行JavaScript代碼,有需要的可以參考一下
    2025-03-03
  • 一文詳解如何基于Python的tkinter庫創(chuàng)建圖形用戶界面

    一文詳解如何基于Python的tkinter庫創(chuàng)建圖形用戶界面

    Tkinter是Python中用于創(chuàng)建圖形用戶界面 (GUI) 的標準庫之一,它基于Tk GUI工具包,這篇文章主要介紹了如何基于Python的tkinter庫創(chuàng)建圖形用戶界面的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-07-07
  • python中cPickle用法例子分享

    python中cPickle用法例子分享

    這篇文章主要介紹了python中cPickle用法例子,有需要的朋友可以參考一下
    2014-01-01
  • Python input函數(shù)使用實例解析

    Python input函數(shù)使用實例解析

    這篇文章主要介紹了Python input函數(shù)使用實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • 詳解Python 實現(xiàn) ZeroMQ 的三種基本工作模式

    詳解Python 實現(xiàn) ZeroMQ 的三種基本工作模式

    ZMQ是一個簡單好用的傳輸層,像框架一樣的一個 socket library,他使得 Socket 編程更加簡單、簡潔和性能更高。 ,這篇文章主要介紹了Python 實現(xiàn) ZeroMQ 的三種基本工作模式,需要的朋友可以參考下
    2020-03-03
  • Python 列表(List) 的三種遍歷方法實例 詳解

    Python 列表(List) 的三種遍歷方法實例 詳解

    這篇文章主要介紹了Python 列表(List) 的三種遍歷方法實例 詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • 基于python的文字轉圖片工具示例詳解

    基于python的文字轉圖片工具示例詳解

    這篇文章主要介紹了基于python的文字轉圖片工具,請求示例是使用?curl?命令請求示例,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • python打印日志方法的使用教程(logging模塊)

    python打印日志方法的使用教程(logging模塊)

    Python標準庫自帶日志模塊logging,logging中涉及到4個核心組件,這些組件構建了logging體系,下面這篇文章主要給大家介紹了關于python打印日志方法的使用教程,需要的朋友可以參考下
    2022-06-06
  • Python元組創(chuàng)建的兩種方式詳解(小括號與tuple函數(shù))

    Python元組創(chuàng)建的兩種方式詳解(小括號與tuple函數(shù))

    在Python的世界里,元組(Tuple)作為最基礎的不可變序列類型,扮演著舉足輕重的角色,它看似簡單,卻蘊含著許多初學者容易忽視的細節(jié),今天,我們將深入探討元組創(chuàng)建的方方面面,幫你徹底掌握這個看似簡單卻暗藏玄機的基礎知識,需要的朋友可以參考下
    2026-05-05

最新評論

新密市| 静乐县| 上饶县| 福州市| 沙湾县| 盖州市| 林州市| 萨嘎县| 繁峙县| 新疆| 通许县| 华容县| 中方县| 招远市| 溧水县| 藁城市| 高尔夫| 子长县| 新蔡县| 舟山市| 离岛区| 达尔| 蓬安县| 开原市| 榆林市| 河南省| 德惠市| 湄潭县| 达拉特旗| 交口县| 柯坪县| 泰宁县| 千阳县| 阿拉善右旗| 涡阳县| 乡城县| 宁武县| 缙云县| 宁化县| 宣城市| 黄冈市|