IRONSOFTWAREHOME

在C#中建立Excel文件

Creating Excel Files in C#

Tim Corey

55m 42s

建立和處理Excel文件是任何建立報告工具、資料導出或使用者輸入介面的C#開發者必備的重要技能。 在本文中,我們深入探討Tim Corey在他的影片"在C#中建立Excel文件"中提供的詳細指導,展示如何使用C#建立Excel文件、格式化文件,甚至從中讀取資料——所有這些都是使用EPPlus程式庫完成的。

無論您是希望從List建立新的Excel工作簿、格式化Excel工作表單元格,還是將結構化資料讀回應用程式,Tim的範例可作為涵蓋C#中Excel生成要點的實用教程。

讓我們逐步分解,參考Tim的影片。

介紹:為什麼在C#中使用Excel?

Tim首先解釋,Microsoft Excel是商業中最重要的工具之一。 Excel文件具有使用者友好性、高度多功能性,非常適合表示資料。 他強調如何在C#中建立Excel文件可以作為複雜報告解決方案的替代,讓Excel成為您的預設報告工具。

目標:使用C#建立一個Excel應用程式,填充資料,應用一些格式,然後從該Excel文件讀取。

在方案管理器中設置項目

Tim打開Visual Studio 2019,選擇一個控制台應用程式(.NET Core),並將方案命名為ExcelDemoApp。使用控制台應用程式提供了一個純淨且無干擾的環境,可以專注於Excel相關的程式碼。

他將目標框架升級到.NET 5.0,以利用C# 9的功能,如簡化的物件實例化。

從NuGet套件新增EPPlus

為了建立Excel工作簿,Tim透過NuGet套件管理器安裝EPPlus套件。 EPPlus是一個處理.xlsx文件(Open XML)的Excel程式庫,支持全Excel功能,如圖表、表格、樣式和公式——不需要MS Office或Excel Interop。

注意:EPPlus對於非商業使用是免費的,但需要商業應用的授權。

他將所需的非商業授權接受行複製到他的程式碼中,以避免運行時錯誤,並新增必要的using OfficeOpenXml; 指令。

定義Excel文件路徑

使用System.IO.FileInfo,Tim設置了一個硬編碼的文件路徑:

var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");

這個文件最初不存在——它將由程式動態建立。

建立一個資料模型

為了填充Excel工作表,Tim定義了一個簡單的PersonModel類別,具有以下屬性:

  • int Id

  • string FirstName

  • string LastName

他使用一個協助方法GetSetupData()返回一個以範例資料(如Tim Corey、Sue Storm和Jane Smith)填充的List<PersonModel>

異步保存資料到Excel文件

在現代開發中,阻塞UI執行緒是不可接受的。 這就是為什麼Tim定義了一個異步方法:

static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)

在寫入Excel之前,他先檢查文件是否存在,並刪除它以避免命名衝突。

if (file.Exists) file.Delete();

建立和格式化Excel工作表

Tim在using塊中使用EPPlus ExcelPackage物件,以確保正確處理資源:

using var package = new ExcelPackage(file);

他將一個新的工作表新增到工作簿中:

var ws = package.Workbook.Worksheets.Add("MainReport");

載入資料

使用LoadFromCollection,他將人員列表插入到單元格"A2"開始:

ws.Cells["A2"].LoadFromCollection(people, true);
  • true確保包含標題(如"Id"、"FirstName"、"LastName")。

然後,AutoFitColumns()自動調整列寬:

ws.Cells[ws.Dimension.Address].AutoFitColumns();

最後,他保存Excel文件

await package.SaveAsync();

設計Excel單元格和行

為了使Excel文件更具可讀性,Tim展示如何應用樣式:

標題行

ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

標頭行

ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

自定義列寬

ws.Column(3).Width = 20;

本節展示了高階格式化,例如:

  • 合併單元格

  • 字型樣式

  • 背景顏色

  • 行/列對齊

  • 寬度調整

這些模仿了典型的MS Office Excel格式功能。

在C#中從Excel文件讀取資料

現在我們已將資料寫入Excel,是時候**將其讀回到C#**中。

Tim介紹了該方法:

static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)

他設置了行和列計數器:

int row = 3; // Skip title and header rows int col = 1;

迴圈行

使用while迴圈,他檢查非空單元格並讀取值:

while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))

在迴圈裡,值會被讀取並解析:

p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();

List<PersonModel>被填充並返回。

驗證導入的資料

Tim在返回的列表中迴圈,將每個條目寫入控制台:

foreach (var p in peopleFromExcel)
{
     Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}

為了展示Excel作為使用者輸入工具的靈活性,Tim手動在Excel文件中直接新增新紀錄("Bill Smith"、"Mary White")。當重新運行該應用程式時,這些條目會被導入而不需要更改程式碼,證明Excel作為資料輸入介面的潛力。

實用的用例

Tim強調C# Excel解決方案的用例:

  • 將資料庫表匯出到Excel

  • 導入由最終使用者輸入的資料

  • 使用Excel作為報告儀表板

  • 建立結構化工作簿以進行資料處理

所有這些都不依賴於Microsoft.Office.Interop.Excel,這需要安裝Excel。

關於EPPlus和Excel文件的最後說明

Tim解釋程式生成的.xlsx文件沒有包含所有元資料,直到它們在Excel中打開並保存。 這就是為什麼在真實的Excel應用程式中打開後,文件大小會增加。

他還指出EPPlus是一個精緻的穩健程式庫,支持:

  • 圖表

  • 圖像

  • 晶Line

  • 公式

  • 頁面設置

  • 邊框

  • 單元格格式設置

結論

在C#中建立Excel文件不必困難或昂貴。由於EPPlus Excel程式庫,開發者可以程式化地構建功能豐富的Excel文件,而不需要MS Office。正如Tim Corey所展示的,僅需要幾行程式碼您就可以:

  • 建立Excel文件

  • 填充行和列

  • 應用樣式

  • 讀回資料

  • 使用Excel作為使用者介面

這使其成為輕量報告工具、資料導入/導出或僅提供使用者已知介面的絕佳選擇。

所以下次您建立項目需要輸出或使用Excel資料時,嘗試實施Tim Corey的影片中的範例程式碼——並將Excel的力量引入您的.NET Framework或.NET Core應用程式。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立