C# 操作 Excel 教學|自動產生報表完整實作(.NET)(NPOI)|C# Excel 系列

更新 發佈閱讀 10 分鐘

在實務工作中,使用 C# 操作 Excel 來自動產生報表是非常常見的需求。本篇 C# 操作 Excel 教學,將帶你從零開始實作 Excel 自動化,包含資料寫入、報表生成等常見功能,讓你可以用 .NET 快速提升工作效率。

假設我們今天接到生產部門的同事說,我想產生以下Excel的格式:

vocus|新世代的創作平台

收到需求後我們就趕緊開始吧!

開始專案開發

1 . 首先,我們要先打開Visual Studio 2022 建立一個Asp.Net C# Windows Forms(如不熟悉建立專案流程可點連結參考)

vocus|新世代的創作平台

2 . 拖拉一個Button到畫面中,讓我們有一個程式啟動的按鈕

vocus|新世代的創作平台

3 . 對畫面中的button1連點兩下,自動產生button1_Click區塊

編輯器會自動幫你產生 button1_Click這個區塊。這個區塊就是告訴編譯器當我的程式執行起來後,button1這個按鈕如果被按下去,就會進來button1_Click區塊執行裡面的程式碼。

vocus|新世代的創作平台

4 . 開啟ChatGPT

在ChatGPT上開始詢問,我的習慣詢問方式會將使用的程式寫在最前面需求寫在後面。

以這個需求為例: asp.net c# windows forms 產生Excel

每個人的ChatGPT回答都會有所不同,剛開始入門先照著我的版本一起去實作即可。

以下為我的ChatGPT回答(因為產生Excel的套件非常多種,我選擇我比較常使用的NPOI這個套件)

-------------------------------------------------------------------------------------------------------

步驟 1:安裝 NPOI

使用 NuGet 包管理器來安裝 NPOI:

Install-Package NPOI

步驟 2:編寫生成 Excel 文件的程式碼

下面是如何創建 Excel 文件並將數據導出到文件的基本範例:

using NPOI.HSSF.UserModel; 
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using System;
using System.IO;
using System.Windows.Forms;

namespace ExcelExportExample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// 按鈕點擊事件,導出 Excel
private void btnExportToExcel_Click(object sender, EventArgs e)
{
// 創建工作簿
IWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");

// 創建表頭
IRow headerRow = sheet.CreateRow(0);
headerRow.CreateCell(0).SetCellValue("ID");
headerRow.CreateCell(1).SetCellValue("Name");
headerRow.CreateCell(2).SetCellValue("Age");

// 添加數據行
IRow row1 = sheet.CreateRow(1);
row1.CreateCell(0).SetCellValue(1);
row1.CreateCell(1).SetCellValue("John Doe");
row1.CreateCell(2).SetCellValue(30);

IRow row2 = sheet.CreateRow(2);
row2.CreateCell(0).SetCellValue(2);
row2.CreateCell(1).SetCellValue("Jane Smith");
row2.CreateCell(2).SetCellValue(25);

// 將文件寫入磁碟
using (FileStream fs = new FileStream("exportedData.xlsx", FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}

MessageBox.Show("Excel 文件已成功生成!");
}
}
}

-------------------------------------------------------------------------------------------------------

接下來我們跟著ChatGPT的步驟開始!

ChatGPT 步驟1:安裝NPOI

這部分初學者建議不要用下指令的方式去下載,指令對於初學者比較難懂,我們用asp.net原本就有提供的NuGet(專門下載套件的工具)來下載安裝NPOI。

  • 在編譯器畫面最右邊方案總管找到我們的專案(圖一)

(圖一)

vocus|新世代的創作平台
  • 對著專案按下右鍵,選擇管理NuGet套件(N)...(圖二)

(圖二)

vocus|新世代的創作平台
  • 進入畫面後,上方的要選到瀏覽 -> 輸入框輸入NPOI -> 選第一個選項 -> 右邊跳出NPOI的相關介紹,按下安裝(圖三)

(圖三)

vocus|新世代的創作平台
  • 跳出訊息直接按下套用(圖四)

(圖四)

vocus|新世代的創作平台
  • 按下我接受(圖五)

(圖五)

vocus|新世代的創作平台
  • 跑完後下方訊息出現已完成,右邊安裝按鈕會顯示成解除安裝,代表安裝完成(圖六)

(圖六)

vocus|新世代的創作平台

ChatGPT 步驟2: 編寫生成Excel的程式碼

在ChatGPT步驟2,ChatGPT給了我們範例程式碼,這段程式碼稍微瞄一下會發現跟我們的Form1.cs檔案裏面的程式碼很像,並且仔細觀察會看到:

private void btnExportToExcel_Click(object sender, EventArgs e)

這時候就會聯想到我們前面的步驟3,當時我們對button1點了兩下,在Form1.cs有生成一個button1按下會進入的區塊

private void button1_Click(object sender, EventArgs e)

ChatGPT範例的btnExportToExcel_Click這個區塊就是按鈕的進入點,只是範例的按鈕名稱是btnExportToExcel而我們的是button1,所以我們只要把ChatGPT步驟2範例的程式碼22-50行複製起來,貼上我們的private void button1_Click(object sender, EventArgs e){}大括弧裡面,到時候程式執行起來,按下button1就會進入區塊執行產生Excel的程式碼了。

vocus|新世代的創作平台

(補充說明: 步驟4 我認為是一個很重要的環節,今天不管懂不懂程式,使用AI開發會提升很多開發的效率。 假如我是一個初學者,我可以很快透過ChatGPT來更快達到學習成效。 如果是一個經驗豐富的開發者,則可以讓AI去幫我們記住程式的語法就可以,不需要耗費自己的腦袋資源去背固定的東西,只要保持著清楚的思維以及知道怎麼問就可以。我自己也是重來都不背程式的語法,需要用到的時候再上網查即可。)

5 .按下執行來測試Excel產生結果

  • 全部儲存並且按下開始按鈕。(圖一)

(圖一)

vocus|新世代的創作平台
  • 跑出執行畫面並且點下button1。(圖二)

(圖二)

vocus|新世代的創作平台
  • 執行成功按下確定。(圖三)

(圖三)

vocus|新世代的創作平台
  • 關閉程式。(圖四)

(圖四)

vocus|新世代的創作平台
  • 到路徑底下查看產出的Excel。路徑可點選右邊方案總管,對著專案點一下,下方屬性列會顯示專案資料夾位置。(圖五)

(圖五)

vocus|新世代的創作平台
  • 複製路徑打開隨便一個資料夾把路徑貼上,打開裡面的bin資料夾。(圖六)

(圖六)

vocus|新世代的創作平台
  • 打開Debug資料夾。(圖七)

(圖七)

vocus|新世代的創作平台
  • 進入資料夾後就會看到程式產生的exportedData.xlsx檔案。(圖八)

(圖八)

vocus|新世代的創作平台
  • 打開查看結果。(圖九)

(圖九)

vocus|新世代的創作平台

結論

到這裡我們已經成功的使用程式產生出Excel檔案了。為了讓大家對程式不要感到厭煩,我們到這邊就算一個階段的完成,大家可以稍做休息好好享受自己努力的成果,提升一點成就感。不過,目前產出來的範例檔案跟我們接到的需求不同,下一篇我們再來一起學習如何把範例檔案調整成適合我們需求的格式吧!



留言
avatar-img
ITT Fun
0會員
15內容數
主要內容會教大家如何快速有效轉職到中大型公司內部系統的軟體工程師。 程式真的沒有很困難,不論之前覺得學習太枯燥乏味或是其他因素而放棄或從未開始,這邊會帶給大家不同的體驗。 我們會用實際案例來當作教學主軸,用我親身的經歷讓大家快樂學習程式,過程中可以累積很多程式作品還會提升很多成就感,同時還能增加成功轉職的機會!
ITT Fun的其他內容
2026/03/10
在開始學習 C# 之前,你一定會好奇:C# 是什麼?.NET 又是什麼?兩者之間有什麼關係?本篇將用最簡單的方式,帶你理解 C# 語言與 .NET 架構的基本概念,並介紹常見的應用場景,幫助新手快速建立完整的程式基礎觀念。
Thumbnail
2026/03/10
在開始學習 C# 之前,你一定會好奇:C# 是什麼?.NET 又是什麼?兩者之間有什麼關係?本篇將用最簡單的方式,帶你理解 C# 語言與 .NET 架構的基本概念,並介紹常見的應用場景,幫助新手快速建立完整的程式基礎觀念。
Thumbnail
2026/03/05
如果你想開始學習 C#,第一步就是完成 Visual Studio 安裝與 .NET 開發環境建置。很多新手在這一步就卡關,例如不知道該下載哪個版本、該勾選哪些功能。本篇將帶你一步一步完成 Visual Studio 安裝教學,並建立完整的 C# 開發環境,讓你可以順利開始寫程式。
Thumbnail
2026/03/05
如果你想開始學習 C#,第一步就是完成 Visual Studio 安裝與 .NET 開發環境建置。很多新手在這一步就卡關,例如不知道該下載哪個版本、該勾選哪些功能。本篇將帶你一步一步完成 Visual Studio 安裝教學,並建立完整的 C# 開發環境,讓你可以順利開始寫程式。
Thumbnail
2026/03/03
在學習程式的過程中,許多新手常常會遇到卡關、看不懂、甚至想放棄的情況。為什麼學程式容易放棄?其實問題通常不在能力,而是在學習方法與心態。本篇將整理程式新手最常見的挫折,以及幫助你持續進步的學習方法,特別適合正在考慮轉職軟體工程師的你。
2026/03/03
在學習程式的過程中,許多新手常常會遇到卡關、看不懂、甚至想放棄的情況。為什麼學程式容易放棄?其實問題通常不在能力,而是在學習方法與心態。本篇將整理程式新手最常見的挫折,以及幫助你持續進步的學習方法,特別適合正在考慮轉職軟體工程師的你。
看更多
你可能也想看
Thumbnail
要轉換到另一個領域,需要投入相當的時間,一旦準備的時間拉得越長,轉職要面臨的壓力也就可能隨之增加。 這次就將 Podcast 先前邀請到多位軟體工程師分享的轉職經驗彙整成整理包,讓大家可以更快找到自己需要的轉職資訊,把更多時間留在提升專業技能上!
Thumbnail
要轉換到另一個領域,需要投入相當的時間,一旦準備的時間拉得越長,轉職要面臨的壓力也就可能隨之增加。 這次就將 Podcast 先前邀請到多位軟體工程師分享的轉職經驗彙整成整理包,讓大家可以更快找到自己需要的轉職資訊,把更多時間留在提升專業技能上!
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
前言:重新定義「被取代」的真正意涵 當我們談論 AI 將在 2030 年「取代」軟體工程師時,這個論述往往過於簡化了一個複雜的轉型過程。真正的問題不是 AI 是否會取代程式設計師,而是哪些工程師會被淘汰,哪些會成為下一代的技術領導者。 歷史告訴我們,每一次技術革命都會重新定義職業的本質,而非簡單
Thumbnail
前言:重新定義「被取代」的真正意涵 當我們談論 AI 將在 2030 年「取代」軟體工程師時,這個論述往往過於簡化了一個複雜的轉型過程。真正的問題不是 AI 是否會取代程式設計師,而是哪些工程師會被淘汰,哪些會成為下一代的技術領導者。 歷史告訴我們,每一次技術革命都會重新定義職業的本質,而非簡單
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
全新版本的《三便士歌劇》如何不落入「復刻經典」的巢臼,反而利用華麗的秀場視覺,引導觀眾在晚期資本主義的消費愉悅之中,而能驚覺「批判」本身亦可能被收編——而當絞繩升起,這場關於如何生存的黑色遊戲,又將帶領新時代的我們走向何種後現代的自我解構?
Thumbnail
曾經因為工作上的衝突,體驗到被甲方的語言攻擊與情緒勒索的不適,引發我思索如何改變現況。朋友的建議點燃了我嘗試轉職的火苗:成為具有專業技能且不受他人左右的自己。由於在資訊服務產業從事PM工作,自然聯想到專注於程式碼的工程師,他們在工作上相對具有專業技能,更不受甲方干擾。
Thumbnail
曾經因為工作上的衝突,體驗到被甲方的語言攻擊與情緒勒索的不適,引發我思索如何改變現況。朋友的建議點燃了我嘗試轉職的火苗:成為具有專業技能且不受他人左右的自己。由於在資訊服務產業從事PM工作,自然聯想到專注於程式碼的工程師,他們在工作上相對具有專業技能,更不受甲方干擾。
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
長期以來,西方美學以《維特魯威人》式的幾何比例定義「完美身體」,這種視覺標準無形中成為殖民擴張與種族分類的暴力工具。本文透過分析奈及利亞編舞家庫德斯.奧尼奎庫的舞作《轉轉生》,探討當代非洲舞蹈如何跳脫「標本式」的文化觀看。
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
若說易卜生的《玩偶之家》為 19 世紀的女性,開啟了一扇離家的窄門,那麼《海妲.蓋柏樂》展現的便是門後的窒息世界。本篇文章由劇場演員 Amily 執筆,同為熟稔文本的演員,亦是深刻體察制度縫隙的當代女性,此文所看見的不僅僅是崩壞前夕的最後發聲,更是女人被迫置於冷酷的制度之下,步步陷入無以言說的困境。
Thumbnail
網路上提到自學程式的文章,都會說自學程式非常地辛苦,而且要很自律,決心夠強;而當自己踏上這條路後,才發現何止是辛苦,根本是佈滿荊棘,常常寸步難行,且被刺地遍體鱗傷(喂~是不是有點太浮誇了),但在每個寫出程式豁然開朗的當下,卻又成就感滿滿,所以想藉著寫部落格紀錄一下自己的學習過程!
Thumbnail
網路上提到自學程式的文章,都會說自學程式非常地辛苦,而且要很自律,決心夠強;而當自己踏上這條路後,才發現何止是辛苦,根本是佈滿荊棘,常常寸步難行,且被刺地遍體鱗傷(喂~是不是有點太浮誇了),但在每個寫出程式豁然開朗的當下,卻又成就感滿滿,所以想藉著寫部落格紀錄一下自己的學習過程!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News