C# 讀取 Excel 檔案全攻略:EPPlus 實作步驟、常見問題與實用案例

本教學完整介紹C#讀取Excel檔案的主流解法,著重EPPlus套件的安裝、授權與程式碼實作,並說明多工作表、特定範圍讀取、常見錯誤處理與進階應用案例,適合專案管理、團隊協作等場景。另設FAQ解答常見疑問,助你精通Excel資料整合。

Notion 新創專屬 3 個月免費福利| 官方合作夥伴限定

經本站專屬連結申請,即享 3 個月 Notion Plus + AI 無限免費 (市價 $6,000 美元)! 務必保留推薦碼 venturer ,否則不符資格。 全程免費,無需信用卡。需用公司 Email 與有效公司網站。
免費使用

200+模板自動化工作流程

從數據到成果,只需一步 — 用Monday代替Excel,效率倍增!
免費使用

AI智能團隊協作

AI驅動的ClickUp超越Excel,讓工作更精準快速!
免費使用

C# 讀取 Excel 檔案全攻略

在現代專案管理、團隊協作與資料處理流程中,Excel檔案常被用於資料彙整、批次匯入、報表產生等多種場景。如何用C#高效讀取Excel檔案,成為許多知識工作者、開發者的實務需求。本篇將從主流解法比較、EPPlus安裝與授權、程式碼實作、常見錯誤、進階應用到FAQ,帶你全面掌握「C# 讀取Excel」的關鍵技巧。


常見解法比較與選擇建議

C#讀取Excel檔案的主流方案有三:

解法 優點 缺點與適用情境
EPPlus 支援.xlsx格式、跨平台、API簡潔、效能佳 商業用途需注意授權(Polyform Noncommercial)、不支援.xls
NPOI 支援.xls與.xlsx、開源、無授權限制 API較複雜、效能略低於EPPlus
Interop.Excel 微軟官方、功能完整、支援Excel全部功能 僅限Windows、需安裝Excel、效能較差

選擇建議:
– 一般讀取.xlsx檔案,推薦使用EPPlus,API簡單且跨平台。
– 需支援.xls或無授權疑慮時,可考慮NPOI
– 僅限Windows且需操作Excel全部功能,才考慮Interop.Excel

授權提醒:
EPPlus自5.x起採用Polyform Noncommercial授權,僅限非商業用途。商業專案請購買授權或改用NPOI。


EPPlus快速安裝與設定

NuGet安裝步驟

  1. 開啟Visual Studio,進入你的C#專案。
  2. 於「工具」→「NuGet套件管理員」→「管理方案的NuGet套件」。
  3. 搜尋EPPlus,選擇後安裝。

.NET版本相容性

  • .NET Framework 4.5+.NET Core 2.0+.NET 5/6/7均支援。
  • 跨平台(Windows、Linux、macOS)皆可用。

LicenseContext設定(必須)

EPPlus 5.x起,需明確設定LicenseContext,否則將拋出例外。
於程式啟動時加入:

ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // 僅限非商業用途

如需商業用途,請依官方指引購買授權。


C# 讀取 Excel 基本範例

以下以EPPlus為例,展示如何讀取Excel檔案內容,並處理常見例外:

using System;
using System.IO;
using OfficeOpenXml;

namespace ExcelReaderDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 設定EPPlus授權模式
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

            string filePath = "example.xlsx"; // Excel檔案路徑

            if (!File.Exists(filePath))
            {
                Console.WriteLine("找不到指定的Excel檔案。");
                return;
            }

            try
            {
                using (var package = new ExcelPackage(new FileInfo(filePath)))
                {
                    // 取得第一個工作表
                    var worksheet = package.Workbook.Worksheets[0];

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

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

重點說明:
– 必須設定LicenseContext,否則會出現授權例外。
– 加入檔案存在檢查與例外處理,避免程式崩潰。
– 支援跨平台執行。

產業應用情境:
適用於批次匯入人員名單、財務報表、專案進度追蹤等自動化流程。


程式碼詳解與常見問題

主要步驟說明

  • ExcelPackage.LicenseContext:設定授權模式,避免執行時例外。
  • File.Exists:確認檔案存在,避免路徑錯誤。
  • ExcelPackage:載入Excel檔案,支援多工作表操作。
  • worksheet.Dimension:自動偵測資料範圍,適合動態資料表。
  • worksheet.Cells[row, col].Text:取得儲存格文字內容,若需原始值可用.Value

讀取多工作表與特定範圍

  • 取得指定工作表:package.Workbook.Worksheets["Sheet2"]
  • 讀取特定範圍:
    csharp
    var range = worksheet.Cells[2, 1, 5, 3]; // 讀取第2~5列,第1~3欄
    foreach (var cell in range)
    {
    Console.WriteLine(cell.Text);
    }

常見錯誤與處理

錯誤情境 處理方式或建議說明
未設定LicenseContext 加入ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
檔案不存在 檢查路徑、權限,使用File.Exists先行判斷
格式錯誤或損毀 確認檔案為有效.xlsx,避免同時開啟編輯
權限不足 以管理員權限執行,或確認檔案未被其他程式鎖定

進階應用與實務案例

讀取含公式、格式、合併儲存格

  • 取得公式內容:worksheet.Cells[row, col].Formula
  • 取得格式:worksheet.Cells[row, col].Style.Numberformat.Format
  • 判斷合併儲存格:worksheet.MergedCells[row, col] != null

批次匯入資料範例

假設需將Excel人員名單匯入資料庫,可先以EPPlus讀取,再逐筆寫入資料庫:

for (int row = 2; row <= rowCount; row++) // 假設第1列為標題
{
    string name = worksheet.Cells[row, 1].Text;
    string email = worksheet.Cells[row, 2].Text;
    // 呼叫資料庫API寫入
}

實務情境:
– 專案管理:自動匯入任務清單至專案管理工具
– 團隊協作:批次同步人員資料至團隊協作平台。
– 財務報表:自動擷取Excel報表數據進行後續分析。


FAQ:C# 讀取 Excel 常見疑問

Q1:EPPlus與NPOI有何差異?

A:EPPlus僅支援.xlsx,API簡單、效能佳,但商業用途需授權。NPOI支援.xls與.xlsx,無授權限制,適合需支援舊格式或商業專案。

Q2:如何只讀取特定欄位或範圍?

A:可用worksheet.Cells[起始列, 起始欄, 結束列, 結束欄]取得範圍,或直接指定欄位索引讀取。

Q3:EPPlus可跨平台嗎?

A:EPPlus支援.NET Core與.NET 5/6/7,適用於Windows、Linux、macOS等多平台。

Q4:如何處理Excel含公式的儲存格?

A:用.Text取得計算後結果,用.Formula取得公式內容。

Q5:遇到「未設定LicenseContext」錯誤怎麼辦?

A:請於程式啟動時加入ExcelPackage.LicenseContext = LicenseContext.NonCommercial;


結論與推薦工具應用

透過EPPlus,C#可高效讀取Excel檔案,無論是批次匯入、資料驗證還是自動化報表,都能大幅提升工作效率。若需將Excel資料進一步整合至專案管理或團隊協作流程,建議可考慮如Monday.comClickUp等專業工具,將Excel數據自動化串接,實現任務追蹤、進度管理與資料共享,讓團隊協作更順暢。

發佈留言

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

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

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