C# Excel 轉換為 PDF 全方位教學與實務應用指南

本指南系統性說明如何以C#將Excel檔案轉換為PDF,從開發環境建置、EPPlus與PdfSharp實作、格式美化到常見錯誤排除,並補充多種應用場景、工具比較與自動化技巧,協助知識工作者與專案團隊提升文件處理效率。

線上PDF文檔處理!

全球超過1億用戶實現文檔自動化處理。創建、編輯、簽署和分享PDF文件。簡便的表單填寫和文件管理功能,適合個人和企業使用。
免費試用

200+模板自動化工作流程

全球500強公司、22.5萬用戶都在用!全面整合專案處理、銷售、行銷、產品團隊工作流程!
免費使用

AI智能團隊協作

全球兩百萬團隊都在用!全面合作+生產力平台,高端智能工具,助你快速完成工作!
免費使用

C# Excel 轉換為 PDF 教學總覽

將Excel檔案轉換為PDF,是許多企業、專案團隊在報表彙整、資料分享、電子發票、合約存檔等場景的常見需求。PDF格式具備跨平台、不可輕易修改、易於列印等優勢,能有效提升文件流通與資訊安全。
本教學將帶你從開發環境建置、工具選擇、程式實作到進階應用,完整掌握C#自動化Excel轉PDF的實務技巧。

適用情境與常見需求

  • 專案報表自動產生:定期將專案進度、資源分配等Excel報表轉為PDF,便於管理層審閱。
  • 財務與發票文件歸檔:將財務明細、發票明細表轉為PDF存檔,確保格式一致與法規合規。
  • 團隊協作資料分享:將Excel資料轉為PDF後,分享給不具備Excel軟體的外部夥伴,避免格式跑掉。
  • 合約、申請表單電子化:將Excel設計的表單轉為PDF,方便電子簽署與資料存證。

Excel 轉 PDF 的常見挑戰

  • 格式跑版:Excel表格在轉為PDF時,欄寬、字型、合併儲存格、顏色等格式可能失真。
  • 多工作表處理:需選擇特定工作表或將多個工作表合併為單一PDF。
  • 大檔案效能:大量資料或複雜格式時,轉換速度與記憶體消耗成為瓶頸。
  • 圖片、圖表、公式支援:部分套件無法完整轉換Excel中的圖片、圖表或公式結果。
  • 權限與安全性:PDF檔案需設定權限,防止未授權修改或複製。

主流轉換方案與工具比較

EPPlus + PdfSharp 方案優缺點

EPPlus專注於Excel檔案的讀寫,支援.xlsx格式,操作簡單、開源且社群活躍。PdfSharp則用於產生與編輯PDF文件,能自訂內容、字型與排版。
兩者結合可實現自動化、靈活的Excel轉PDF流程,適合自訂格式、批次處理或需嵌入於企業系統的情境。

優點:
– 開源、無額外授權費用(商業用途請查閱授權條款)
– 可自訂PDF排版、字型、分頁
– 易於整合自動化流程

限制:
– 需自行處理格式美化、表格繪製
– 不支援.xls(舊格式)、圖片、圖表直接轉換
– 需額外處理大檔案效能與錯誤

其他常見套件比較

套件名稱 支援格式 圖片/圖表支援 格式美化 授權/費用 適用情境
FreeSpire.XLS .xls/.xlsx 支援 免費/商用需付費 需完整轉換格式、圖表、圖片
Aspose.Cells .xls/.xlsx等 完整支援 極佳 商用授權 企業級、複雜Excel轉換
GrapeCity Spread .xls/.xlsx等 支援 商用授權 需高度客製、整合其他報表功能
Office Interop .xls/.xlsx 完整支援 完整 需安裝Office 僅限Windows、需安裝Excel的環境

選擇建議
– 若需高度自訂、輕量自動化,EPPlus+PdfSharp為首選。
– 若需完整保留格式、圖表、圖片,建議評估FreeSpire.XLS或Aspose.Cells。
– 若僅偶爾轉換、無需自動化,可考慮雲端工具如pdfFillerSignNow

開發環境與套件安裝

必要環境與前置作業

  • 建議使用.NET Core或.NET Framework 4.6以上版本
  • 開發工具:Visual Studio(或其他支援C#的IDE)
  • 需具備Excel檔案(.xlsx格式)

NuGet 安裝指令與注意事項

於Visual Studio的「套件管理員主控台」輸入:

Install-Package EPPlus
Install-Package PdfSharp

注意事項:
– EPPlus僅支援.xlsx格式,若需處理.xls,請考慮其他套件。
– PdfSharp不支援直接嵌入Excel圖片、圖表,僅能轉換純文字與表格。
– 若需商業用途,請詳閱各套件授權條款。

C# 程式碼實作詳解

讀取 Excel 文件與資料解析

以下範例示範如何以EPPlus讀取Excel檔案,並解析多工作表與儲存格資料:

using OfficeOpenXml;
using System.IO;

string excelFilePath = "your_excel_file.xlsx";
FileInfo fileInfo = new FileInfo(excelFilePath);

using (ExcelPackage package = new ExcelPackage(fileInfo))
{
    foreach (var worksheet in package.Workbook.Worksheets)
    {
        int rows = worksheet.Dimension.Rows;
        int cols = worksheet.Dimension.Columns;
        // 可依需求處理多工作表或指定工作表
    }
}

實務建議
– 若僅需轉換特定工作表,可用package.Workbook.Worksheets["工作表名稱"]
– 需處理合併儲存格時,建議先解析合併範圍。

生成 PDF 並美化表格

PdfSharp無內建表格繪製功能,需自行計算欄寬、列高與繪製線條。以下為簡化範例:

using PdfSharp.Pdf;
using PdfSharp.Drawing;

PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Microsoft JhengHei", 10);

double startX = 40, startY = 40, cellWidth = 80, cellHeight = 20;

// 假設有rows與cols
for (int row = 1; row <= rows; row++)
{
    for (int col = 1; col <= cols; col++)
    {
        string text = worksheet.Cells[row, col].Text;
        double x = startX + (col - 1) * cellWidth;
        double y = startY + (row - 1) * cellHeight;
        gfx.DrawRectangle(XPens.Black, x, y, cellWidth, cellHeight);
        gfx.DrawString(text, font, XBrushes.Black, new XRect(x + 2, y + 2, cellWidth, cellHeight), XStringFormats.TopLeft);
    }
}
document.Save("output.pdf");
document.Close();

格式美化建議
– 可根據內容動態調整欄寬。
– 若資料過多,需自動分頁(每頁最大列數可自訂)。
– 若需支援中文字型,請選用系統已安裝的中文字型。

整合流程與完整範例

結合上述步驟,處理多工作表、錯誤處理與分頁:

try
{
    using (ExcelPackage package = new ExcelPackage(new FileInfo("your_excel.xlsx")))
    {
        var worksheet = package.Workbook.Worksheets[0];
        int rows = worksheet.Dimension.Rows;
        int cols = worksheet.Dimension.Columns;

        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Microsoft JhengHei", 10);

        double startX = 40, startY = 40, cellWidth = 80, cellHeight = 20;
        int maxRowsPerPage = 30;
        int currentRowOnPage = 0;

        for (int row = 1; row <= rows; row++)
        {
            if (currentRowOnPage >= maxRowsPerPage)
            {
                page = document.AddPage();
                gfx = XGraphics.FromPdfPage(page);
                currentRowOnPage = 0;
            }
            for (int col = 1; col <= cols; col++)
            {
                string text = worksheet.Cells[row, col].Text;
                double x = startX + (col - 1) * cellWidth;
                double y = startY + currentRowOnPage * cellHeight;
                gfx.DrawRectangle(XPens.Black, x, y, cellWidth, cellHeight);
                gfx.DrawString(text, font, XBrushes.Black, new XRect(x + 2, y + 2, cellWidth, cellHeight), XStringFormats.TopLeft);
            }
            currentRowOnPage++;
        }
        document.Save("output.pdf");
        document.Close();
    }
}
catch (Exception ex)
{
    // 錯誤處理
    Console.WriteLine("轉換失敗:" + ex.Message);
}

常見變化
– 只轉換特定區域:調整row/col範圍。
– 多工作表合併:多次繪製於同一PDF或分頁。

常見錯誤與除錯建議

  • Excel檔案損毀或格式不符:請確認檔案可正常開啟,且為.xlsx格式。
  • 字型不支援或亂碼:請指定系統已安裝的中文字型(如「Microsoft JhengHei」)。
  • 權限錯誤:確保程式有讀取Excel與寫入PDF的權限。
  • 記憶體不足:大檔案建議分批處理或優化資料結構。

進階應用與自動化

批次轉換與自動化腳本

若需批次處理多個Excel檔案,可結合目錄掃描與迴圈自動轉換:

string[] files = Directory.GetFiles("excel_folder", "*.xlsx");
foreach (var file in files)
{
    // 依上述流程轉換,每個Excel對應一個PDF
}

可進一步結合排程工具(如Windows Task Scheduler)實現定時自動轉換。

大檔案與效能優化建議

  • 優先讀取必要資料,避免一次載入全部內容。
  • 分頁處理,減少單頁資料量。
  • 針對重複格式、字型,預先建立物件重複使用。

FAQ:C# Excel 轉 PDF 常見問題

支援格式、圖片、公式、圖表等

  • 支援格式:EPPlus僅支援.xlsx,PdfSharp僅能處理純文字與表格。
  • 圖片/圖表:EPPlus可讀取圖片,但PdfSharp需自行繪製,無法自動嵌入。
  • 公式:僅能取得公式計算後的結果,無法保留公式本身。
  • 合併儲存格:需自行判斷合併範圍,調整繪製邏輯。

轉換後PDF美觀度調整

  • 可調整字型、欄寬、列高、顏色與線條樣式。
  • 若需高度還原Excel格式,建議評估FreeSpire.XLS、Aspose.Cells等商用套件。

推薦工具與雲端解決方案

何時選用第三方雲端工具

若僅需偶爾轉換、無需自動化或格式高度還原,建議考慮雲端PDF工具如pdfFillerSignNow
適用情境:
– 無需自行開發程式,操作簡單
– 支援批次上傳、電子簽署、權限管理
– 適合跨部門、外部協作或臨時需求

優點:
– 免安裝、跨平台
– 支援多種格式轉換
– 內建簽署、審批等進階功能

限制:
– 需上傳資料至雲端,注意資訊安全
– 大量自動化或特殊格式仍需程式開發

結論與實務建議

選擇方案建議

  • 需自動化、可接受自訂格式:EPPlus+PdfSharp最具彈性。
  • 需完整還原格式、圖表、圖片:建議商用FreeSpire.XLS或Aspose.Cells。
  • 僅偶爾需求、重視操作便利:可選雲端工具如pdfFiller、SignNow。

後續學習資源

立即試用推薦工具

如需更高效率的團隊協作與文件自動化,建議體驗Monday.comClickUpNotion等專案管理平台,結合文件處理與流程自動化,讓專案管理更輕鬆。

✨ 讓專案管理變簡單,團隊更強大!

在專案推進的每一步,效率就是競爭力。monday.com 整合進度追蹤、團隊協作與資源分配,讓你隨時掌握全局、快速解決問題。
全球18萬家專業團隊已經採用,你還在等什麼?