除了寫入資料,C# 讀取 Excel 也是常見的開發需求。本篇將透過 NPOI 套件,帶你完成 Excel 資料讀取與處理的基本流程,適合剛接觸 Excel 自動化的新手,快速掌握資料匯入與解析技巧。
今天財務部門的同仁提出了一個需求,他們收到Excel的資料後,每次都要自己打開計算金額覺得很累,有沒有辦法請軟體工程師開發自動讀取Excel並計算裡面的金額加總?
這類的需求相當常見,我們就開始開發吧!
專案開發
語言:asp.net c#
應用程式: windows forms
讀取Excel元件: NPOI
1 . 建立專案
- 打開Visual Studio 2022 建立一個asp.net c# windows forms專案,選Windows Forms App(.NET Framework),下一步後按建立(圖一)
(圖一)

- 拉一個button在畫面上提供程式的進入點(圖二)
(圖二)

- 對(圖二)button1點左鍵兩下,進入程式執行的區塊(圖三)
(圖三)

2 . 詢問ChatGPT
- 語言、框架、套件清楚的表達給GPT如下:
asp.net c# windows form app(.Net FrameWork) 使用NPOI讀取Excel資料
- 安裝NPOI (詳細NPOI安裝可看此篇 C# 操作 Excel 教學|自動產生報表完整實作(.NET)(NPOI)|C# Excel 系列 )


- 取得GPT給的範例,並把範例程式碼放到我們button1按下後會執行程式的區塊內,private void button1_Click(object sender, EventArgs e)的大括號{}裡面
(請先用我查到的範例,後續有一定的基礎後可以自己使用GPT查出的範例,以免初學階段看不懂GPT的範例導致學習成效不彰)
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Excel Files|*.xlsx;*.xls";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog.FileName;
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
XSSFWorkbook workbook = new XSSFWorkbook(fs);
ISheet sheet = workbook.GetSheetAt(0);
for (int rowIndex = 0; rowIndex <= sheet.LastRowNum; rowIndex++)
{
IRow row = sheet.GetRow(rowIndex);
if (row != null)
{
for (int colIndex = 0; colIndex < row.LastCellNum; colIndex++)
{
ICell cell = row.GetCell(colIndex);
if (cell != null)
{
string cellValue = cell.ToString();
Console.WriteLine($"Row {rowIndex + 1}, Column {colIndex + 1}: {cellValue}");
}
}
}
}
}
}
}
3 . 測試效果
- 用一個測試檔案來測試是否可以正確讀出Excel內容(圖一)

- 執行程式,按下button1選取檔案(圖二、圖三)
(圖二)

(圖三)

- 看結果(圖四)
會看到Excel的內容在編譯器的輸出顯示出來
(圖四)

結論
到目前為止我們已經會用程式讀取Excel內容,又學會了一項IT工程師的技能,可以再幫自己的成就感 + 1。下一篇我們會來研究範例程式碼的細節。














