C# 建立 Excel 文件教程
本教程將逐步引導您如何在支持 .NET Framework 4.5 或 .NET Core 的任何平台上創建 Excel 工作簿文件。在 C# 中創建 Excel 文件甚至可以在不依賴傳統 Microsoft.Office.Interop.Excel 庫的情況下完成。使用 IronXL 設置工作表屬性如凍結窗格和保護、設置列印屬性等。
概述
如何在 C# 中建立 Excel 檔案
- 下載此 C# 庫以建立 Excel 及 CSV 檔案
- 建立 ASP.NET 專案網頁應用程式
- 使用 C# 函式庫建立 Excel 活頁簿
- 在 Excel 工作表中手動設定儲存格值
- 應用格式並設置儲存格背景顏色
- 在單元格中使用公式
- 設置工作表和打印屬性
- 保存您的Excel工作簿
IronXL 在 .NET 中創建 C# Excel 檔案
IronXL 是一個直觀的 C# 和 VB Excel API 允許您在.NET中讀取、編輯和創建Excel電子表格文件,並具有極快的性能。無需安裝MS Office或甚至Excel Interop。
IronXL完全支持.NET Core、.NET Framework、Xamarin、手機、Linux、macOS和Azure。
IronXL 功能:
- 來自我們 .NET 開發團隊的直接人員支援
- 使用 Microsoft Visual Studio 快速安裝
- 免費開發使用。授權價格從 $749 開始。
創建並保存 Excel 文件:快速代碼
https://www.nuget.org/packages/IronXL.Excel/ 作為替代方案,該 可以下载IronXL.dll 並添加到您的專案中。
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-1.cs
using IronXL;
// Default file format is XLSX, we can override it using CreatingOptions
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
var workSheet = workBook.CreateWorkSheet("example_sheet");
workSheet["A1"].Value = "Example";
// Set value to multiple cells
workSheet["A2:A4"].Value = 5;
workSheet["A5"].Style.SetBackgroundColor("#f0f0f0");
// Set style to multiple cells
workSheet["A5:A6"].Style.Font.Bold = true;
// Set formula
workSheet["A6"].Value = "=SUM(A2:A4)";
if (workSheet["A6"].IntValue == workSheet["A2:A4"].IntValue)
{
Console.WriteLine("Basic test passed");
}
workBook.SaveAs("example_workbook.xlsx");
Imports IronXL
' Default file format is XLSX, we can override it using CreatingOptions
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Private workSheet = workBook.CreateWorkSheet("example_sheet")
Private workSheet("A1").Value = "Example"
' Set value to multiple cells
Private workSheet("A2:A4").Value = 5
workSheet("A5").Style.SetBackgroundColor("#f0f0f0")
' Set style to multiple cells
workSheet("A5:A6").Style.Font.Bold = True
' Set formula
workSheet("A6").Value = "=SUM(A2:A4)"
If workSheet("A6").IntValue = workSheet("A2:A4").IntValue Then
Console.WriteLine("Basic test passed")
End If
workBook.SaveAs("example_workbook.xlsx")
第一步
1. 下載免費的 IronXL C# 庫
立即開始在您的專案中使用IronPDF,並享受免費試用。
查看 IronXL 上 Nuget 快速安裝和部署。已被下載超過800萬次,它正用C#改變Excel。
Install-Package IronXL.Excel
請考慮安裝 IronXL DLL 直接下載並手動安裝到您的專案或GAC表單: IronXL.zip
手動安裝到您的項目中
下載DLL使用 NuGet 安裝
安裝IronXL NuGet套件有三種不同的方法:
Visual Studio
開發者命令提示視窗
- 直接下載NuGet套件
Visual Studio
Visual Studio 提供了 NuGet 包管理器,您可以用它來安裝專案中的 NuGet 套件。您可以透過專案選單或在解決方案總管中右鍵點擊專案來存取它。這兩個選項如圖 3 和圖 4 所示。
在點擊任一選項的管理 NuGet 套件後,瀏覽 IronXL.Excel 套件並按照圖 5 所示進行安裝。
開發者命令提示字元
打開開發者命令提示符,按照以下步驟安裝 IronXL.Excel NuGet 套件:
搜尋您的開發者命令提示符 - 通常在您的 Visual Studio 文件夾下
輸入以下命令:
PM > Install-Package IronXL.Excel
按下 Enter 鍵
套件將會被安裝。
- 重新載入您的 Visual Studio 專案
直接下載 NuGet 套件
為了下載 NuGet 套件,請依照以下步驟操作:
點擊下載套件
套件下載完畢後,雙擊它
- 重新加載您的 Visual Studio 專案
通過直接下載庫來安裝 IronXL
安裝IronXL的第二種方法是直接從以下網址下載:https://ironsoftware.com/csharp/excel/
在您的專案中引用該庫,請按以下步驟操作:
右鍵點擊方案總管中的方案
選擇引用
瀏覽 IronXL.dll 庫文件
- 點擊確定
出發吧!
既然您已經設置好了,我們可以開始嘗試 IronXL 庫中的一些很棒的功能。!
教學課程
2. 建立一個 ASP.NET 專案
- 請瀏覽以下網址:
- https://www.nuget.org/packages/ironxl.excel/
- 點擊下載套件
- 下載套件後,雙擊它
- 重新載入您的 Visual Studio 專案
使用以下步驟來創建一個 ASP.NET 網站
打開 Visual Studio
點擊檔案 > 新建專案
在專案類型列表框中選擇 Visual C# 下的 Web
- 選擇 ASP.NET Web Application,如下所示
圖 1 – 新專案
點擊確定
- 在下一個畫面中,選擇 Web Forms,如圖2所示
圖2 – Web Forms
- 按一下確定
現在我們有東西可以使用了。安裝 IronXL 以開始自訂您的檔案。
3. 建立 Excel 工作簿
使用 IronXL 建立新的 Excel 工作簿再簡單不過了! 這是一行代碼! 是的,真的:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-2.cs
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
這兩個XLS (較舊的 Excel 文件版本) 和XLSX (當前及較新版本檔案) 可以使用IronXL建立檔案格式。
3.1. 設置預設工作表
而且,創建預設工作表更加簡單:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-3.cs
WorkSheet workSheet = workBook.CreateWorkSheet("2020 Budget");
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("2020 Budget")
上面的代碼片段中的 "Sheet" 代表工作表,您可以使用它來設置儲存格的值,幾乎能做到 Excel 可以做的一切。
如果您對工作簿 (Workbook) 和工作表 (Worksheet) 之間的差異感到困惑,讓我來解釋:
一個工作簿包含多個工作表。這意味著您可以在一個工作簿中添加任意多個工作表。在後續的文章中,我會解釋如何做到這一點。工作表包含行和列。行與列的交叉點叫做儲存格,這就是您在使用 Excel 時要操作的對象。
4. 設置單元格值
4.1. 手動設置單元格值
要手動設置單元格值,只需指明您正在處理的單元格並設置其值,如以下示例所示:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-4.cs
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";
workSheet("A1").Value = "January"
workSheet("B1").Value = "February"
workSheet("C1").Value = "March"
workSheet("D1").Value = "April"
workSheet("E1").Value = "May"
workSheet("F1").Value = "June"
workSheet("G1").Value = "July"
workSheet("H1").Value = "August"
workSheet("I1").Value = "September"
workSheet("J1").Value = "October"
workSheet("K1").Value = "November"
workSheet("L1").Value = "December"
在這裡,我已經填充了 A 到 L 列,每列的第一行為不同月份的名稱。
4.2. 動態設置單元格值
動態設置值與前面代碼段幾乎相同。好處是您不必將單元格位置寫死。在下一個代碼示例中,您將創建一個新的隨機對象來生成隨機數,然後使用一個 for 循環迭代您想要填充值的單元格範圍。
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-5.cs
Random r = new Random();
for (int i = 2 ; i <= 11 ; i++)
{
workSheet["A" + i].Value = r.Next(1, 1000);
workSheet["B" + i].Value = r.Next(1000, 2000);
workSheet["C" + i].Value = r.Next(2000, 3000);
workSheet["D" + i].Value = r.Next(3000, 4000);
workSheet["E" + i].Value = r.Next(4000, 5000);
workSheet["F" + i].Value = r.Next(5000, 6000);
workSheet["G" + i].Value = r.Next(6000, 7000);
workSheet["H" + i].Value = r.Next(7000, 8000);
workSheet["I" + i].Value = r.Next(8000, 9000);
workSheet["J" + i].Value = r.Next(9000, 10000);
workSheet["K" + i].Value = r.Next(10000, 11000);
workSheet["L" + i].Value = r.Next(11000, 12000);
}
Dim r As New Random()
For i As Integer = 2 To 11
workSheet("A" & i).Value = r.Next(1, 1000)
workSheet("B" & i).Value = r.Next(1000, 2000)
workSheet("C" & i).Value = r.Next(2000, 3000)
workSheet("D" & i).Value = r.Next(3000, 4000)
workSheet("E" & i).Value = r.Next(4000, 5000)
workSheet("F" & i).Value = r.Next(5000, 6000)
workSheet("G" & i).Value = r.Next(6000, 7000)
workSheet("H" & i).Value = r.Next(7000, 8000)
workSheet("I" & i).Value = r.Next(8000, 9000)
workSheet("J" & i).Value = r.Next(9000, 10000)
workSheet("K" & i).Value = r.Next(10000, 11000)
workSheet("L" & i).Value = r.Next(11000, 12000)
Next i
每個從A2到L11的儲存格都包含一個隨機生成的唯一值。
談到動態值,何不學習如何從資料庫中動態地將數據直接添加到儲存格中?下一個代碼片段快速展示了如何做到這一點,假設您已正確設置了資料庫連接。
4.3. 直接從資料庫添加
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-6.cs
// Create database objects to populate data from database
string contring;
string sql;
DataSet ds = new DataSet("DataSetName");
SqlConnection con;
SqlDataAdapter da;
// Set Database Connection string
contring = @"Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password";
// SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name";
// Open Connection & Fill DataSet
con = new SqlConnection(contring);
da = new SqlDataAdapter(sql, con);
con.Open();
da.Fill(ds);
// Loop through contents of dataset
foreach (DataTable table in ds.Tables)
{
int Count = table.Rows.Count - 1;
for (int j = 12; j <= 21; j++)
{
workSheet["A" + j].Value = table.Rows[Count]["Field_Name_1"].ToString();
workSheet["B" + j].Value = table.Rows[Count]["Field_Name_2"].ToString();
workSheet["C" + j].Value = table.Rows[Count]["Field_Name_3"].ToString();
workSheet["D" + j].Value = table.Rows[Count]["Field_Name_4"].ToString();
workSheet["E" + j].Value = table.Rows[Count]["Field_Name_5"].ToString();
workSheet["F" + j].Value = table.Rows[Count]["Field_Name_6"].ToString();
workSheet["G" + j].Value = table.Rows[Count]["Field_Name_7"].ToString();
workSheet["H" + j].Value = table.Rows[Count]["Field_Name_8"].ToString();
workSheet["I" + j].Value = table.Rows[Count]["Field_Name_9"].ToString();
workSheet["J" + j].Value = table.Rows[Count]["Field_Name_10"].ToString();
workSheet["K" + j].Value = table.Rows[Count]["Field_Name_11"].ToString();
workSheet["L" + j].Value = table.Rows[Count]["Field_Name_12"].ToString();
}
Count++;
}
' Create database objects to populate data from database
Dim contring As String
Dim sql As String
Dim ds As New DataSet("DataSetName")
Dim con As SqlConnection
Dim da As SqlDataAdapter
' Set Database Connection string
contring = "Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password"
' SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name"
' Open Connection & Fill DataSet
con = New SqlConnection(contring)
da = New SqlDataAdapter(sql, con)
con.Open()
da.Fill(ds)
' Loop through contents of dataset
For Each table As DataTable In ds.Tables
Dim Count As Integer = table.Rows.Count - 1
For j As Integer = 12 To 21
workSheet("A" & j).Value = table.Rows(Count)("Field_Name_1").ToString()
workSheet("B" & j).Value = table.Rows(Count)("Field_Name_2").ToString()
workSheet("C" & j).Value = table.Rows(Count)("Field_Name_3").ToString()
workSheet("D" & j).Value = table.Rows(Count)("Field_Name_4").ToString()
workSheet("E" & j).Value = table.Rows(Count)("Field_Name_5").ToString()
workSheet("F" & j).Value = table.Rows(Count)("Field_Name_6").ToString()
workSheet("G" & j).Value = table.Rows(Count)("Field_Name_7").ToString()
workSheet("H" & j).Value = table.Rows(Count)("Field_Name_8").ToString()
workSheet("I" & j).Value = table.Rows(Count)("Field_Name_9").ToString()
workSheet("J" & j).Value = table.Rows(Count)("Field_Name_10").ToString()
workSheet("K" & j).Value = table.Rows(Count)("Field_Name_11").ToString()
workSheet("L" & j).Value = table.Rows(Count)("Field_Name_12").ToString()
Next j
Count += 1
Next table
您只需將特定單元格的值屬性設置為要輸入到單元格中的字段名稱。
5. 應用格式
5.1. 設定儲存格的背景色
要設定單一儲存格或一系列儲存格的背景顏色,您只需使用類似以下的代碼行:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-7.cs
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");
workSheet("A1:L1").Style.SetBackgroundColor("#d3d3d3")
這將範圍內的儲存格背景顏色設置為灰色。顏色為 RGB (紅色、綠色、藍色) 格式為前兩個字符代表紅色,接下來兩個代表綠色,最後兩個代表藍色。數值範圍從0到9,然後是A到F (十六進制).
5.2. 建立邊框
使用 IronXL 建立邊框非常簡單,如下所示:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-8.cs
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet("A1:L1").Style.TopBorder.SetColor("#000000")
workSheet("A1:L1").Style.BottomBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.Type = IronXL.Styles.BorderType.Medium
workSheet("A11:L11").Style.BottomBorder.SetColor("#000000")
workSheet("A11:L11").Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium
在上面的程式碼中,我已將 A1 到 L1 單元格設置為黑色的上邊框和下邊框,然後我將 L2 到 L11 單元格設置了右邊框,且邊框樣式設置為中等。最後,我已將 A11 到 L11 單元格設置為下邊框。
6. 在單元格中使用公式
我一直說 IronXL 使一切變得如此簡單,而事實確實如此,我無法強調得更多。! 以下程式碼允許您使用公式:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-9.cs
// Use IronXL built-in aggregations
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();
// Assign value to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;
' Use IronXL built-in aggregations
Dim sum As Decimal = workSheet("A2:A11").Sum()
Dim avg As Decimal = workSheet("B2:B11").Avg()
Dim max As Decimal = workSheet("C2:C11").Max()
Dim min As Decimal = workSheet("D2:D11").Min()
' Assign value to cells
workSheet("A12").Value = sum
workSheet("B12").Value = avg
workSheet("C12").Value = max
workSheet("D12").Value = min
這個功能的好處是你可以設定儲存格的資料類型,因此可以設定公式的結果。上面的程式碼顯示了如何使用 SUM (總計值), AVG (平均值), MAX (獲取最高值) 和最小 (獲取最低值) 公式。
7. 設定工作表和打印屬性
7.1. 設定工作表屬性
工作表的屬性包括凍結行與列及使用密碼保護工作表。如下所示:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-10.cs
workSheet.ProtectSheet("Password");
workSheet.CreateFreezePane(0, 1);
workSheet.ProtectSheet("Password")
workSheet.CreateFreezePane(0, 1)
第一列是凍結的,不會隨著工作表的其他部分一起滾動。該工作表也使用密碼保護,防止任何編輯。圖7和圖8展示了這一點。
7.2. 設定頁面和列印屬性
您可以設定頁面的屬性,例如頁面的方向、頁面的大小以及列印區域等。
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-11.cs
workSheet.SetPrintArea("A1:L12");
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape;
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4;
workSheet.SetPrintArea("A1:L12")
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4
列印區域設定為A1到L12。方向設定為橫向,紙張大小設定為A4。
8. 保存工作簿
要保存工作簿,請使用以下代碼:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-12.cs
workBook.SaveAs("Budget.xlsx");
workBook.SaveAs("Budget.xlsx")
快速指南
在 GitHub 上探索此教學
此專案的源代碼在 GitHub 上以 C# 和 VB.NET 提供。
只需幾分鐘即可使用此代碼輕鬆啟動和運行。該項目保存為 Microsoft Visual Studio 2017 項目,但與任何 .NET IDE 兼容。
如何在 GitHub 上用 C# 創建 Excel 檔案