翻譯|使用教程|編輯:吉煒煒|2024-12-30 17:11:27.730|閱讀 219 次
概述:本文通過 Spire.XLS for .NET 演示如何使用 C# 通過流創(chuàng)建、加載、修改和保存 Excel 文件,為數(shù)據(jù)管理提供靈活且可擴(kuò)展的解決方案。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
通過 C# 中的流進(jìn)行操作,開發(fā)者可以動(dòng)態(tài)地創(chuàng)建、加載、修改和保存 Excel 文件,從而實(shí)現(xiàn)靈活高效的數(shù)據(jù)處理。這種方法可以在很大程度上減少直接的磁盤 I/O 操作,不僅提升了應(yīng)用程序性能,還增強(qiáng)了響應(yīng)能力。尤其適用于實(shí)時(shí)數(shù)據(jù)操作或存儲(chǔ)受限的場(chǎng)景,可以簡(jiǎn)化數(shù)據(jù)交換和系統(tǒng)集成。本文通過 Spire.XLS for .NET 演示如何使用 C# 通過流創(chuàng)建、加載、修改和保存 Excel 文件,為數(shù)據(jù)管理提供靈活且可擴(kuò)展的解決方案。
首先,您需要將 Spire.XLS for .NET 包含的 DLL 文件作為引用添加到您的 .NET 項(xiàng)目中。DLL 文件可以從下載,也可以通過 安裝。
PM> Install-Package Spire.XLS
利用 Spire.XLS for .NET,開發(fā)者可以通過初始化 Workbook 對(duì)象動(dòng)態(tài)創(chuàng)建 Excel 文件,然后填充數(shù)據(jù)并設(shè)置格式,最后使用 Workbook.SaveToStream() 方法將其保存到流。這種方法可以省去直接對(duì)磁盤進(jìn)行文件存儲(chǔ)的需求,同時(shí)提升了應(yīng)用的性能和響應(yīng)速度。
以下是通過 C# 創(chuàng)建 Excel 文件并保存到流的步驟:
using Spire.Xls; using System.Data; using System.Drawing; namespace CreateExcelStream { class Program { static void Main(string[] args) { // 創(chuàng)建一個(gè)新的工作簿實(shí)例 Workbook workbook = new Workbook(); // 獲取工作簿中的第一個(gè)工作表 Worksheet sheet = workbook.Worksheets[0]; // 創(chuàng)建并填充一個(gè)包含示例數(shù)據(jù)的 DataTable DataTable dataTable = new DataTable("Data"); dataTable.Columns.Add("編號(hào)", typeof(int)); dataTable.Columns.Add("姓名", typeof(string)); dataTable.Columns.Add("年齡", typeof(int)); dataTable.Columns.Add("國(guó)家", typeof(string)); dataTable.Columns.Add("工資 (¥)", typeof(decimal)); dataTable.Rows.Add(1, "張偉", 29, "中國(guó)", 8000m); dataTable.Rows.Add(2, "李娜", 35, "中國(guó)", 12000m); dataTable.Rows.Add(3, "王強(qiáng)", 42, "中國(guó)", 15000m); dataTable.Rows.Add(4, "杰克", 26, "美國(guó)", 9500m); dataTable.Rows.Add(5, "陳思", 31, "中國(guó)", 11000m); dataTable.Rows.Add(6, "石原安子", 28, "日本", 8800m); // 將 DataTable 中的數(shù)據(jù)插入到工作表中 sheet.InsertDataTable(dataTable, true, 1, 1); // 格式化工作表 // 設(shè)置表頭行的樣式 sheet.Rows[0].Style.Color = Color.LightSkyBlue; sheet.Rows[0].Style.Font.FontName = "微軟雅黑"; sheet.Rows[0].Style.Font.Size = 12f; sheet.Rows[0].BorderAround(); // 給表頭行添加外邊框 sheet.Rows[0].Borders.Color = Color.LightSteelBlue; // 設(shè)置邊框顏色 // 設(shè)置數(shù)據(jù)行的樣式 for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++) { sheet.Rows[i].Style.Color = Color.LightGray; sheet.Rows[i].Style.Font.FontName = "微軟雅黑"; sheet.Rows[i].Style.Font.Size = 11f; } sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].BorderInside(); // 添加數(shù)據(jù)行單元格內(nèi)邊框 sheet.Range[2, 1, sheet.Rows.Count(), sheet.Columns.Count()].Borders.Color = Color.LightSteelBlue; // 設(shè)置邊框顏色 // 調(diào)整列寬以適應(yīng)內(nèi)容 for (int j = 1; j <= sheet.AllocatedRange.Columns.Count(); j++) { sheet.AutoFitColumn(j); } // 將工作簿保存到內(nèi)存流 MemoryStream stream = new MemoryStream(); workbook.SaveToStream(stream, FileFormat.Version2016); // 將流內(nèi)容寫入到文件 File.WriteAllBytes("output/通過流創(chuàng)建Excel文件.xlsx", stream.ToArray()); // 釋放資源 workbook.Dispose(); } } }
通過 Spire.XLS for .NET,開發(fā)者可以利用 Workbook.LoadFromStream() 方法直接從流加載 Excel 文件。加載完成后,可以輕松讀取到流中 Excel 文件的單元格數(shù)據(jù),實(shí)現(xiàn)快速靈活的數(shù)據(jù)處理,而無(wú)需文件 I/O 操作。
以下是通過 C# 從流加載并讀取 Excel 文件的步驟:
using Spire.Xls; namespace LoadExcelStream { class Program { static void Main(string[] args) { // 創(chuàng)建一個(gè) Workbook 類的實(shí)例 Workbook workbook = new Workbook(); // 創(chuàng)建一個(gè)內(nèi)存流 MemoryStream stream = new MemoryStream(); File.OpenRead("Sample.xlsx").CopyTo(stream); // 從內(nèi)存流加載 Excel 文件 workbook.LoadFromStream(stream); // 獲取工作簿中的第一個(gè)工作表 Worksheet sheet = workbook.Worksheets[0]; // 初始化一個(gè)列表,用于存儲(chǔ)從工作表中提取的數(shù)據(jù) List<List<string>> data = new List<List<string>>(); for (int i = 0; i < sheet.AllocatedRange.Rows.Count(); i++) { // 創(chuàng)建一個(gè)列表來(lái)存儲(chǔ)每行數(shù)據(jù) List<string> lines = new List<string>(); for (int j = 0; j < sheet.AllocatedRange.Columns.Count(); j++) { // 獲取單元格的值并添加到當(dāng)前行的列表中 lines.Add(sheet.AllocatedRange[i + 1, j + 1].Value); } // 將當(dāng)前行的數(shù)據(jù)添加到數(shù)據(jù)列表中 data.Add(lines); } // 打印提取的數(shù)據(jù),或?qū)⑵溆糜诤罄m(xù)操作 foreach (List<string> lines in data) { Console.WriteLine(string.Join(" | ", lines)); } } } }
借助 Spire.XLS for .NET,開發(fā)者可以在內(nèi)存中修改 Excel 文件。首先通過 LoadFromStream() 方法將流中的 Excel 文件加載到 Workbook 對(duì)象中。完成修改(例如更改單元格值或格式)后,可以使用 Workbook.SaveToStream() 方法將文件保存回流。無(wú)需依賴直接的文件存儲(chǔ)操作即可實(shí)現(xiàn)實(shí)時(shí)的 Excel 文件數(shù)據(jù)更改。
以下是通過 C# 修改流中 Excel 文件的步驟:
using Spire.Xls; using System.Drawing; namespace ModifyExcelStream { class Program { static void Main(string[] args) { // 創(chuàng)建 Workbook 類的一個(gè)新實(shí)例 Workbook workbook = new Workbook(); // 創(chuàng)建一個(gè)內(nèi)存流 MemoryStream stream = new MemoryStream(); File.OpenRead("Sample.xlsx").CopyTo(stream); // 從內(nèi)存流加載 Excel 文件 workbook.LoadFromStream(stream); // 獲取工作簿中的第一個(gè)工作表 Worksheet sheet = workbook.Worksheets[0]; // 修改表頭行的樣式 CellRange headerRow = sheet.AllocatedRange.Rows[0]; headerRow.Style.Font.FontName = "宋體"; headerRow.Style.Font.Size = 12f; headerRow.Style.Color = Color.LightBlue; // 修改數(shù)據(jù)行的樣式 for (int i = 1; i < sheet.AllocatedRange.Rows.Count(); i++) { CellRange dataRow = sheet.AllocatedRange.Rows[i]; dataRow.Style.Font.FontName = "宋體"; dataRow.Style.Font.Size = 10f; dataRow.Style.Color = Color.LightGray; // 交替著色(偶數(shù)行) if (i % 2 == 0) { dataRow.Style.Color = Color.LightSlateGray; } } // 自動(dòng)調(diào)整列寬以適應(yīng)內(nèi)容 for (int k = 1; k <= sheet.AllocatedRange.Columns.Count(); k++) { sheet.AutoFitColumn(k); } // 修改邊框顏色 sheet.AllocatedRange.Style.Borders.Color = Color.White; // 將修改后的工作簿保存回內(nèi)存流 workbook.SaveToStream(stream); // 將流內(nèi)容寫入到一個(gè)新文件 File.WriteAllBytes("output/通過流修改Excel文件.xlsx", stream.ToArray()); // 釋放資源 workbook.Dispose(); } } }
歡迎下載|體驗(yàn)更多E-iceblue產(chǎn)品
獲取更多信息請(qǐng)咨詢 ;技術(shù)交流Q群(767755948)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自:慧都網(wǎng)