國產(chǎn)化Excel開發(fā)組件Spire.XLS教程:C# 寫入 Excel ,輕松將數(shù)據(jù)導(dǎo)出到工作表

Excel 作為最常用的數(shù)據(jù)管理與分析工具之一,被廣泛應(yīng)用于各類數(shù)據(jù)處理場景。在 C# 應(yīng)用程序開發(fā)過程中,無論是生成業(yè)務(wù)報表、導(dǎo)出數(shù)據(jù)庫查詢結(jié)果,還是實現(xiàn)自動化辦公流程,C# 寫入 Excel 的功能都扮演著至關(guān)重要的角色。
借助 Spire.XLS for .NET這一強大的第三方庫,開發(fā)者無需在運行環(huán)境中安裝 Microsoft Excel,即可高效、靈活地實現(xiàn) Excel 文件的創(chuàng)建、寫入與導(dǎo)出操作。本文將系統(tǒng)講解如何 使用 C# 寫入 Excel 文件 ,包括不同數(shù)據(jù)類型的插入方法、批量數(shù)據(jù)寫入技巧、文件保存與導(dǎo)出,助力開發(fā)者提升數(shù)據(jù)處理與自動化能力。
Spire.XLS for .NET試用下載,請聯(lián)系E-iceblue Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
Spire.XLS for .NET 簡介與安裝
什么是 Spire.XLS for .NET
Spire.XLS for .NET 是由 E-iceblue 開發(fā)的一款專業(yè) Excel 庫。它允許開發(fā)人員在 C# 中寫入 Excel 文件,并執(zhí)行包括創(chuàng)建、編輯、讀取和導(dǎo)出 Excel 文檔在內(nèi)的多種操作,而無需安裝 Microsoft Excel。
主要功能包括:
- 通過編程寫入和更新 Excel 文件
- 支持 Excel 格式(XLS、XLSX、CSV、ODS)
- 提供高級功能,如公式、圖表、數(shù)據(jù)透視表和數(shù)據(jù)驗證
- 將 Excel 導(dǎo)出為 PDF、HTML 和圖片格式
- 在處理大型數(shù)據(jù)集時保持高性能,適用于桌面、服務(wù)器和 Web 應(yīng)用程序
如何安裝 Spire.XLS for .NET
方式一:通過 NuGet 安裝(推薦)
- 打開 Visual Studio。
- 依次選擇 工具 > NuGet 包管理器 > 管理解決方案的 NuGet 包...
- 搜索 Spire.XLS 并安裝。
或直接使用包管理器控制臺:
PM> Install-Package Spire.XLS
方式二:手動安裝
- 聯(lián)系慧都科技下載 Spire.XLS 安裝包。
- 在項目中添加對 Spire.Xls.dll的引用。
安裝完成后,你就可以在 C# 中開始寫入 Excel 了。
如何在 C# 中創(chuàng)建 Excel 文件
第一步是創(chuàng)建一個新的工作簿并添加工作表,示例如下:
using Spire.Xls;
namespace CreateNewExcel
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建一個新的工作簿
Workbook workbook = new Workbook();
// 移除默認工作表
workbook.Worksheets.Clear();
// 添加一個工作表
Worksheet sheet = workbook.Worksheets.Add("報告");
// 保存空的 Excel 文件
workbook.SaveToFile("新建文檔.xlsx", ExcelVersion.Version2016);
workbook.Dispose();
}
}
}
此時,你已經(jīng)成功創(chuàng)建了一個包含名為“報告”的工作表的空 Excel 文件。接下來我們將向其中寫入數(shù)據(jù)。
C# 向 Excel 單元格寫入不同數(shù)據(jù)類型
Spire.XLS 允許你直接將多種數(shù)據(jù)類型寫入 Excel 單元格。常見示例如下:
寫入文本
sheet.Range["A1"].Text = "你好 Excel!";
寫入數(shù)字
sheet.Range["A2"].NumberValue = 123.45;
寫入日期和時間
sheet.Range["A3"].DateTimeValue = DateTime.Now;
sheet.Range["A3"].NumberFormat = "yyyy-mm-dd hh:mm";
寫入布爾值
sheet.Range["A4"].BooleanValue = true;
寫入 TimeSpan
sheet.Range["A5"].TimeSpanValue = new TimeSpan(2, 30, 0);
sheet.Range["A5"].NumberFormat = "[h]:mm:ss";
插入公式
sheet.Range["A6"].Formula = "=SUM(A2,100)";
插入 HTML 格式字符串
string htmlText = "<span style=\"font-family: Times New Roman; color: blue; font-size: 15pt;\">HTML <strong>格式文本</strong></span>";
sheet.Range["A7"].HtmlString = htmlText;
寫入通用值
sheet.Range["A8"].Value = "一般數(shù)據(jù)";

C# 將批量數(shù)據(jù)寫入 Excel 工作表
處理大型數(shù)據(jù)集時,逐個單元格寫入效率很低。Spire.XLS 提供了直接插入數(shù)組和 DataTable 的方法,其他數(shù)據(jù)結(jié)構(gòu)可以先轉(zhuǎn)換為數(shù)組或 DataTable。
寫入數(shù)組到 Excel
使用 Worksheet.InsertArray方法,可以將一維或二維數(shù)組寫入指定區(qū)域:
string[,] data = {
{ "姓名", "年齡", "國家" },
{ "張三", "30", "中國" },
{ "李四", "28", "中國" },
{ "王五", "35", "加拿大" }
};
sheet.InsertArray(data, 1, 1);
效果圖:

寫入 DataTable 到 Excel
使用 InsertDataTable方法將 DataTable 數(shù)據(jù)導(dǎo)入到工作表:
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("產(chǎn)品", typeof(string));
dt.Columns.Add("價格", typeof(double));
dt.Rows.Add(1, "筆記本電腦", 8999);
dt.Rows.Add(2, "平板電腦", 5999);
dt.Rows.Add(3, "手機", 6999);
sheet.InsertDataTable(dt, true, 1, 1, true);
效果圖:

寫入 List 到 Excel
雖然 Spire.XLS 沒有直接支持寫入 List 的方法,但你可以先將 List 轉(zhuǎn)換為 DataTable,再寫入 Excel。
using Spire.Xls;
using System.Data;
namespace WriteListToExcel
{
class Program
{
static void Main(string[] args)
{
// 創(chuàng)建一個工作簿實例
Workbook workbook = new Workbook();
// 移除默認工作表
workbook.Worksheets.Clear();
// 添加一個工作表并命名
Worksheet worksheet = workbook.Worksheets.Add("成績單");
// 創(chuàng)建一個學(xué)生數(shù)據(jù)列表
List<Student> students = new List<Student>
{
new Student("邁克爾", "約翰遜", 20, "計算機科學(xué)", 3.8),
new Student("莎拉", "威廉姆斯", 22, "數(shù)學(xué)", 3.6),
new Student("杰西卡", "布朗", 19, "物理", 3.9),
new Student("大衛(wèi)", "史密斯", 21, "化學(xué)", 3.7),
new Student("艾米莉", "戴維斯", 23, "生物", 3.5)
};
// 將列表轉(zhuǎn)換為數(shù)據(jù)表
DataTable dataTable = ConvertListToDataTable(students);
// 將數(shù)據(jù)表寫入工作表
worksheet.InsertDataTable(dataTable, true, 1, 1, true);
// 設(shè)置列寬
worksheet.AllocatedRange.ColumnWidth = 12;
// 內(nèi)容左對齊
worksheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Left;
// 保存為Excel文件
workbook.SaveToFile("學(xué)生成績單.xlsx", ExcelVersion.Version2016);
// 釋放資源
workbook.Dispose();
}
static DataTable ConvertListToDataTable(List<Student> students)
{
DataTable dataTable = new DataTable();
// 添加列
dataTable.Columns.Add("名字", typeof(string));
dataTable.Columns.Add("姓氏", typeof(string));
dataTable.Columns.Add("年齡", typeof(int));
dataTable.Columns.Add("專業(yè)", typeof(string));
dataTable.Columns.Add("績點", typeof(double));
// 添加行
foreach (var student in students)
{
DataRow row = dataTable.NewRow();
row["名字"] = student.FirstName;
row["姓氏"] = student.LastName;
row["年齡"] = student.Age;
row["專業(yè)"] = student.Major;
row["績點"] = student.GPA;
dataTable.Rows.Add(row);
}
return dataTable;
}
}
class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string Major { get; set; }
public double GPA { get; set; }
public Student(string firstName, string lastName, int age, string major, double gpa)
{
FirstName = firstName;
LastName = lastName;
Age = age;
Major = major;
GPA = gpa;
}
}
}
效果圖:

保存和導(dǎo)出 Excel 文件
寫入數(shù)據(jù)后,你需要保存或?qū)С?Excel 文件。Spire.XLS 支持多種格式(XLSX、CSV、PDF 等):
// 保存為 XLSX
workbook.SaveToFile("Output.xlsx", ExcelVersion.Version2016);
// 保存為 CSV
workbook.SaveToFile("Output.csv", ",", Encoding.UTF8);
// 導(dǎo)出為 PDF
workbook.SaveToFile("Output.pdf", FileFormat.PDF);
在 Web 應(yīng)用中,還可以將文件保存到 MemoryStream:
using (MemoryStream ms = new MemoryStream())
{
workbook.SaveToStream(ms, FileFormat.Version2016);
// 可寫入到 ASP.NET Response
}
常見問題與解決方案
-
日期/時間格式錯誤
- 問題:日期/時間顯示為序列號。
- 解決辦法:設(shè)置正確的單元格格式。
-
數(shù)據(jù)覆蓋或錯位
- 問題:數(shù)組或 DataTable 寫入時覆蓋現(xiàn)有數(shù)據(jù)。
- 解決辦法:檢查 InsertArray/InsertDataTable 的起始行列參數(shù)。
-
大數(shù)據(jù)集寫入性能低
- 問題:數(shù)千行寫入速度慢。
- 解決辦法:使用批量寫入方法,避免逐單元格寫入。
-
公式未正確計算
- 問題:寫入的公式未返回預(yù)期結(jié)果。
- 解決辦法:檢查公式語法,必要時調(diào)用 workbook.CalculateAllValue()。
總結(jié)
在 C# 中實現(xiàn) Excel 寫入功能既直觀又高效。借助 Spire.XLS for .NET,無論是寫入單個數(shù)值、文本、日期,還是處理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)集,都能輕松勝任。該庫不僅支持單元格樣式、公式計算、條件格式等高級功能,還能精準控制輸出效果,確保最終生成的 Excel 文件數(shù)據(jù)準確、外觀專業(yè)。
通過數(shù)組或 DataTable 進行批量數(shù)據(jù)寫入,可大幅提升數(shù)據(jù)輸出效率,靈活應(yīng)對不同體量的數(shù)據(jù)導(dǎo)出需求。若你正在尋找一種穩(wěn)定、高效且無需依賴 Microsoft Excel 環(huán)境的文件生成方案,Spire.XLS for .NET 無疑是一個理想的技術(shù)選擇。
Spire.XLS for .NET試用下載,請聯(lián)系E-iceblue Spire官方授權(quán)代理商慧都科技
歡迎加入Spire技術(shù)交流Q群(125237868),與更多小伙伴一起提升文檔開發(fā)技能~
常見問答(FAQs)
Q1. 我能用 Spire.XLS 寫入已有的 Excel 文件嗎?
可以。使用 workbook.LoadFromFile("file.xlsx") 打開文件,然后修改并保存。
Q2. Spire.XLS 是否需要安裝 Microsoft Excel?
不需要,它是一個獨立庫。
Q3. Spire.XLS 能處理包含成千上萬行的大文件嗎?
可以,它針對大數(shù)據(jù)集做了性能優(yōu)化。
Q4. 寫入數(shù)據(jù)時如何設(shè)置單元格樣式?
你可以通過以下方式設(shè)置字體、顏色、邊框和對齊方式:
sheet.Range["A1"].Style.Font.IsBold = true;
sheet.Range["A1"].Style.Color = Color.Yellow;
sheet.Range["A1"].Style.HorizontalAlignment = HorizontalAlignType.Left;
本文將系統(tǒng)講解如何使用 C# 寫入 Excel 文件 ,包括不同數(shù)據(jù)類型的插入方法、批量數(shù)據(jù)寫入技巧、文件保存與導(dǎo)出,助力開發(fā)者提升數(shù)據(jù)處理與自動化能力。
浙公網(wǎng)安備 33010602011771號