C# 教學:EPPlus 讀取 Excel 文件全攻略(含多工作表、型別處理與錯誤排查)

本篇詳細解析C#透過EPPlus讀取Excel檔案的完整流程,包含安裝步驟、授權須知、程式碼實作、資料型別處理、多工作表操作、效能建議與常見錯誤排查,並比較EPPlus與其他C# Excel套件,助你在專案管理與資料處理上更得心應手。

🧮 還在用 Excel 管理專案?試試這些更聰明的工具 🚀

從 Excel 升級到專業專案管理 × 自動化平台

還在用 Excel 追進度?monday.com 幫你把任務、時程、甘特圖、報表全部自動化! 支援 Excel 一鍵匯入,輕鬆轉換成更直覺的視覺化專案看板。 全球 22.5 萬家公司愛用,AI 輔助讓團隊溝通更順暢。
⭐ 最多人使用

從任務到 OKR,一站式專案與團隊協作平台

整合文件、OKR、任務與自動化流程,AI 助你更快完成工作。 也支援從 Excel 匯入專案資料。

輕鬆整理文件 × 規劃專案 × 建立資料庫

Notion AI 幫你自動生成 SOP、專案摘要與任務追蹤頁面。 從 Excel 匯入表格,打造你自己的工作空間。

C# 讀取 Excel 文件教學總覽

在專案管理、資料整合與自動化流程中,C#開發者經常需要讀取Excel檔案。常見應用包括批次資料匯入、報表自動產生、資料驗證等。市面上主流的C# Excel處理套件有EPPlus、NPOI、Microsoft.Office.Interop.Excel等。本文聚焦於EPPlus,因其易用、跨平台、無需安裝Excel軟體,特別適合伺服器端或自動化應用。

EPPlus 適用情境與優缺點

  • 適用情境:需在.NET環境下讀取或寫入Excel(.xlsx)檔案,且不希望依賴Excel本體。
  • 優點:API簡潔、支援多種Excel功能、跨平台、效能佳。
  • 限制:不支援舊版.xls格式;自EPPlus 5起,商業用途需購買授權。

EPPlus 安裝與授權說明

使用 NuGet 安裝 EPPlus

EPPlus可透過Visual Studio的NuGet套件管理器安裝,亦可用CLI指令:

  1. 開啟專案,於方案總管右鍵點選專案名稱,選擇「管理NuGet套件」。
  2. 搜尋「EPPlus」,選擇並安裝最新版。
  3. 或於Package Manager Console輸入:
    Install-Package EPPlus
  4. CLI用戶可執行:
    dotnet add package EPPlus

EPPlus 授權政策與商業用途注意事項

EPPlus自5.0版起採用Polyform Noncommercial License,僅允許非商業用途。若專案涉及商業行為(如企業內部系統、SaaS服務),需購買商業授權。建議於專案初期明確評估授權需求,避免後續法律風險。

C# 讀取 Excel 文件實作步驟

基本範例代碼與說明

以下為EPPlus讀取Excel檔案的基本範例,涵蓋例外處理與詳細註解:

using System;
using System.IO;
using OfficeOpenXml;

class Program
{
    static void Main()
    {
        // 設定EPPlus授權(非商業用途)
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

        // Excel檔案路徑
        var filePath = @"C:\Data\sample.xlsx";
        if (!File.Exists(filePath))
        {
            Console.WriteLine("檔案不存在,請確認路徑正確。");
            return;
        }

        try
        {
            using (var package = new ExcelPackage(new FileInfo(filePath)))
            {
                // 取得第一個工作表
                var worksheet = package.Workbook.Worksheets[0];
                if (worksheet == null)
                {
                    Console.WriteLine("找不到工作表。");
                    return;
                }

                // 取得資料範圍
                var rowCount = worksheet.Dimension.Rows;
                var colCount = worksheet.Dimension.Columns;

                // 逐列逐欄讀取資料
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int col = 1; col <= colCount; col++)
                    {
                        var cellValue = worksheet.Cells[row, col].Text;
                        Console.Write(cellValue + "\t");
                    }
                    Console.WriteLine();
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("讀取Excel發生錯誤:" + ex.Message);
        }
    }
}

重點說明:
– 檔案路徑請依實際情境調整,建議加上檔案存在檢查。
– 建議包覆try-catch,避免因檔案損毀、權限不足導致程式異常中斷。
– 讀取資料時使用.Text可自動轉為字串,後續可依需求進行型別轉換。

讀取特定工作表與多工作表資料

若需指定工作表名稱或遍歷所有工作表,可參考下列做法:

// 取得指定名稱的工作表
var worksheet = package.Workbook.Worksheets["Sheet2"];

// 遍歷所有工作表
foreach (var ws in package.Workbook.Worksheets)
{
    Console.WriteLine($"工作表名稱:{ws.Name}");
    // 可依上例讀取每個工作表的資料
}

實務案例
專案管理系統中,常見需求為批次匯入多個工作表(如任務、資源、時程等),可利用上述方式自動處理多表結構。

處理不同資料型別與格式

Excel單元格可能包含數字、日期、布林、字串等。EPPlus提供多種屬性讀取型別:

var cell = worksheet.Cells[row, col];
if (cell.Value is DateTime dt)
{
    // 日期型別
    Console.WriteLine(dt.ToString("yyyy-MM-dd"));
}
else if (cell.Value is double num)
{
    // 數值型別
    Console.WriteLine(num);
}
else
{
    // 其他型別(字串、布林等)
    Console.WriteLine(cell.Text);
}

常見情境
如財務報表自動化時,需正確判斷日期與數字欄位,避免資料誤判。

常見錯誤處理與除錯建議

  • 檔案不存在:請先檢查路徑與檔名是否正確。
  • 格式錯誤:EPPlus僅支援.xlsx,若為.xls請先轉檔。
  • 權限不足:確認執行程式帳號對檔案有讀取權限。
  • 資料範圍為null:可能因工作表為空,建議先檢查worksheet.Dimension是否為null。
  • 合併儲存格:讀取時僅會取得左上角儲存格資料,需特別處理。

除錯建議
可於關鍵步驟加上Console.WriteLine輸出,協助定位問題來源。

進階應用與效能建議

處理大型 Excel 檔案效能建議

  • 只讀取必要資料:避免一次載入整張大表,建議僅處理所需範圍。
  • 分批處理:如資料量極大,可分批讀取或分頁處理。
  • 釋放資源:使用using確保EPPlus物件釋放,避免記憶體洩漏。

產業應用案例
在製造業批次匯入生產數據時,建議先篩選有效資料行再進行處理,可大幅提升效能。

實際應用案例分享

  • 批次匯入專案任務:將Excel任務清單自動匯入專案管理系統,減少人工輸入。
  • 資料驗證:自動檢查Excel欄位格式,回報異常資料。
  • 報表自動化:定期讀取Excel數據,產生圖表或自動寄送報表。

EPPlus 與其他 C# Excel 套件比較

套件名稱 支援格式 是否需安裝Excel 跨平台 授權政策 特色與限制
EPPlus .xlsx 非商業免費,商業需付費 API簡潔,效能佳,不支援.xls
NPOI .xls/.xlsx Apache 2.0 支援.xls,API較複雜
Microsoft.Office.Interop.Excel .xls/.xlsx 需安裝Excel 依Office授權 功能完整,僅限Windows

選擇建議
– 需跨平台、僅處理.xlsx:建議EPPlus。
– 需支援.xls:可考慮NPOI。
– 需完整Excel功能且可接受安裝Excel:可用Interop(僅限桌面應用)。

常見問題(FAQ)

Q1:EPPlus支援哪些Excel格式?
A:僅支援.xlsx(Excel 2007以上),不支援舊版.xls。

Q2:如何處理合併儲存格?
A:EPPlus讀取合併儲存格時,僅左上角儲存格有值,其他儲存格為空。需自行判斷合併範圍。

Q3:EPPlus可用於Linux或雲端環境嗎?
A:可,EPPlus支援.NET Core,適用於Windows、Linux、雲端等多平台。

Q4:如何判斷單元格資料型別?
A:可用cell.Value.GetType()判斷,或依需求轉型。

Q5:遇到「授權錯誤」訊息怎麼辦?
A:請確認用途是否符合非商業授權,若為商業用途需購買授權。

結論與推薦工具

透過EPPlus,C#開發者能高效讀取與處理Excel檔案,無論是批次資料匯入、報表自動化還是專案管理整合,皆能大幅提升工作效率。若你希望將Excel資料進一步整合至專案管理流程,建議可評估如Monday.comClickUp等專業工具,這些平台支援Excel資料匯入,並提供自動化、協作與視覺化報表,助你優化團隊協作與專案追蹤。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

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

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