C#導(dǎo)出Excel的幾種常見方式及詳細實現(xiàn)步驟
常用Excel導(dǎo)出方式
在 C# 中,常用的Excel 文件導(dǎo)出 方式包括:
- 使用 Microsoft Office Interop Excel 組件:這是一種使用 Microsoft Excel 應(yīng)用程序?qū)ο竽P蛠韯?chuàng)建和編輯 Excel 文件的方式。它提供了強大的功能,但需要安裝 Microsoft Excel 或者 Microsoft Office 套件。
- 使用 NPOI 組件:NPOI 是一個 C#/.NET 平臺上的開源組件,它可以讀寫 Microsoft Office 格式的文檔,包括 Excel、Word 和 PowerPoint 等。相比于 Interop Excel 組件,NPOI 更加輕量級,不需要依賴于 Microsoft Excel 應(yīng)用程序。
- 使用 EPPlus 組件:EPPlus 是一個免費的開源組件,它可以創(chuàng)建和讀取 Excel 文件。它提供了一些方便的方法,如對單元格格式、圖表、公式等進行操作。EPPlus 支持 .NET Framework 3.5 及更高版本,并不需要依賴于 Microsoft Excel 應(yīng)用程序。
- 使用 ClosedXML 組件:ClosedXML 是一個簡單易用的開源組件,它可以讀取、創(chuàng)建和修改 Excel 文件。與 EPPlus 類似,它也提供了一些方便的方法來操縱 Excel 文件。ClosedXML 支持 .NET Framework 4.0 及更高版本。
以上是常用的幾種 C# 導(dǎo)出 Excel 文件的方式,每種方式都有其特點和優(yōu)缺點,選擇適合自己需求的方式進行開發(fā)即可。以下針對每種導(dǎo)出方式,羅列了具體步驟以及Demo。
1.使用 Microsoft Office Interop Excel 組件導(dǎo)出 Excel 文件
使用 Microsoft Office Interop Excel 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 Microsoft.Office.Interop.Excel 命名空間:在項目中添加對 Microsoft.Office.Interop.Excel 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建 Excel 應(yīng)用程序?qū)ο螅菏褂?
Application
類創(chuàng)建一個 Excel 應(yīng)用程序?qū)ο蟆?/li> - 創(chuàng)建工作簿對象:使用
Application.Workbooks.Add()
方法創(chuàng)建一個新的工作簿對象。 - 獲取工作表對象:使用
Workbook.Worksheets
屬性獲取工作表集合,并使用索引或名稱獲取工作表對象。 - 向單元格寫入數(shù)據(jù):使用
Worksheet.Cells
屬性獲取單元格對象,并使用Range.Value
屬性或Range.Formula
屬性向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
Workbook.SaveAs()
方法將 Excel 文件保存到磁盤。 - 關(guān)閉 Excel 應(yīng)用程序和工作簿對象:使用
Workbook.Close()
方法關(guān)閉工作簿對象,并使用Application.Quit()
方法關(guān)閉 Excel 應(yīng)用程序?qū)ο蟆?/li> - 釋放資源:使用
Marshal.ReleaseComObject()
方法釋放 Excel 應(yīng)用程序?qū)ο蠛凸ぷ鞑緦ο蟮馁Y源。
下面是一個示例代碼,演示如何使用 Microsoft Office Interop Excel 組件導(dǎo)出 Excel 文件:
using System; using System.Data; using System.IO; using Microsoft.Office.Interop.Excel; namespace ExportExcelDemo { class Program { static void Main(string[] args) { // 創(chuàng)建一個 DataTable 對象來存儲數(shù)據(jù) DataTable dataTable = new DataTable("MyData"); // 添加列到 DataTable dataTable.Columns.Add("Name", typeof(string)); dataTable.Columns.Add("Age", typeof(int)); // 向 DataTable 中添加數(shù)據(jù)行 dataTable.Rows.Add("John Doe", 30); dataTable.Rows.Add("Jane Smith", 25); // 使用 Microsoft Office Interop Excel 組件導(dǎo)出 Excel 文件 Application excelApp = new Application(); Workbook workbook = excelApp.Workbooks.Add(); Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; int row = 1; foreach (DataRow dataRow in dataTable.Rows) { worksheet.Cells[row, 1] = dataRow["Name"].ToString(); worksheet.Cells[row, 2] = dataRow["Age"]; row++; } // 將 Excel 文件保存到磁盤 string fileName = @"C:\temp\MyExcelFile.xlsx"; workbook.SaveAs(fileName); // 關(guān)閉 Excel 應(yīng)用程序和工作簿對象,并釋放資源 workbook.Close(); excelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); } } }
在這個示例代碼中,我們使用 Application
類創(chuàng)建了一個 Excel 應(yīng)用程序?qū)ο?,并使用它來?chuàng)建了一個新的工作簿對象。然后,我們使用 Workbook.Worksheets
屬性獲取工作表集合,并使用索引獲取了第一個工作表對象。接下來,我們使用 Worksheet.Cells
屬性獲取單元格對象,并使用 Range.Value
屬性或 Range.Formula
屬性向單元格寫入數(shù)據(jù)。最后,我們使用 Workbook.SaveAs()
方法將 Excel 文件保存到磁盤,關(guān)閉了工作簿對象和 Excel 應(yīng)用程序?qū)ο?,并釋放了它們的資源。
2.使用 NPOI 組件導(dǎo)出 Excel 文件
使用 NPOI 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 NPOI 命名空間:在項目中添加對 NPOI 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建工作簿對象:使用
HSSFWorkbook
或XSSFWorkbook
類創(chuàng)建一個新的工作簿對象,分別對應(yīng)于 Excel 的 .xls 和 .xlsx 格式。 - 獲取工作表對象:使用
CreateSheet()
方法創(chuàng)建一個新的工作表對象,并設(shè)置工作表名稱。 - 設(shè)置單元格樣式:可以使用
CellStyle
類和Font
類來設(shè)置單元格樣式。 - 向單元格寫入數(shù)據(jù):使用
CreateRow()
方法創(chuàng)建一個新的行對象,使用CreateCell()
方法創(chuàng)建一個新的單元格對象,并使用SetValue()
方法向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
FileStream
類將 Excel 文件保存到磁盤。 - 釋放資源:使用
Dispose()
方法釋放工作簿對象和 FileStream 對象的資源。
下面是一個示例代碼,演示如何使用 NPOI 組件導(dǎo)出 Excel 文件:
using System; using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespace ExportExcelDemo { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? // 創(chuàng)建一個 DataTable 對象來存儲數(shù)據(jù) ? ? ? ? ? ? DataTable dataTable = new DataTable("MyData"); ? ? ? ? ? ? // 添加列到 DataTable ? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string)); ? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int)); ? ? ? ? ? ? // 向 DataTable 中添加數(shù)據(jù)行 ? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30); ? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25); ? ? ? ? ? ? // 使用 NPOI 組件導(dǎo)出 Excel 文件 ? ? ? ? ? ? IWorkbook workbook = new HSSFWorkbook(); ? ? ? ? ? ? ISheet worksheet = workbook.CreateSheet("MySheet"); ? ? ? ? ? ? int row = 0; ? ? ? ? ? ? foreach (DataRow dataRow in dataTable.Rows) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? IRow newRow = worksheet.CreateRow(row); ? ? ? ? ? ? ? ? newRow.CreateCell(0).SetCellValue(dataRow["Name"].ToString()); ? ? ? ? ? ? ? ? newRow.CreateCell(1).SetCellValue(Convert.ToInt32(dataRow["Age"])); ? ? ? ? ? ? ? ? row++; ? ? ? ? ? ? } ? ? ? ? ? ? // 將 Excel 文件保存到磁盤 ? ? ? ? ? ? string fileName = @"C:\temp\MyExcelFile.xls"; ? ? ? ? ? ? using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? workbook.Write(fs); ? ? ? ? ? ? } ? ? ? ? ? ? // 釋放資源 ? ? ? ? ? ? workbook.Dispose(); ? ? ? ? } ? ? } }
在這個示例代碼中,我們使用 HSSFWorkbook
類創(chuàng)建了一個新的工作簿對象,并使用它來創(chuàng)建了一個名為 "MySheet" 的工作表對象。然后,我們使用 CreateRow()
方法和 CreateCell()
方法創(chuàng)建了新的行對象和單元格對象,并使用 SetValue()
方法向單元格寫入數(shù)據(jù)。最后,我們使用 FileStream
類將 Excel 文件保存到磁盤,并使用 Dispose()
方法釋放工作簿對象的資源。如果需要生成 .xlsx 格式的文件,可以使用 XSSFWorkbook
類代替 HSSFWorkbook
類。
3.使用 EPPlus 組件導(dǎo)出Excel文件
使用 EPPlus 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 EPPlus 命名空間:在項目中添加對 EPPlus 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建工作簿對象:使用
ExcelPackage
類創(chuàng)建一個新的工作簿對象。 - 獲取工作表對象:使用
Workbook.Worksheets.Add()
方法創(chuàng)建一個新的工作表對象,并設(shè)置工作表名稱。 - 設(shè)置單元格樣式:可以使用
ExcelRange.Style
屬性來設(shè)置單元格樣式。 - 向單元格寫入數(shù)據(jù):使用
SetValue()
方法向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
ExcelPackage.SaveAs()
方法將 Excel 文件保存到磁盤。 - 釋放資源:使用
Dispose()
方法釋放工作簿對象的資源。
下面是一個示例代碼,演示如何使用 EPPlus 組件導(dǎo)出 Excel 文件:
using System; using System.Data; using System.IO; using OfficeOpenXml; namespace ExportExcelDemo { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? // 創(chuàng)建一個 DataTable 對象來存儲數(shù)據(jù) ? ? ? ? ? ? DataTable dataTable = new DataTable("MyData"); ? ? ? ? ? ? // 添加列到 DataTable ? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string)); ? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int)); ? ? ? ? ? ? // 向 DataTable 中添加數(shù)據(jù)行 ? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30); ? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25); ? ? ? ? ? ? // 使用 EPPlus 組件導(dǎo)出 Excel 文件 ? ? ? ? ? ? using (ExcelPackage excelPackage = new ExcelPackage()) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("MySheet"); ? ? ? ? ? ? ? ? int row = 1; ? ? ? ? ? ? ? ? foreach (DataRow dataRow in dataTable.Rows) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? worksheet.Cells[row, 1].Value = dataRow["Name"].ToString(); ? ? ? ? ? ? ? ? ? ? worksheet.Cells[row, 2].Value = Convert.ToInt32(dataRow["Age"]); ? ? ? ? ? ? ? ? ? ? row++; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? // 將 Excel 文件保存到磁盤 ? ? ? ? ? ? ? ? string fileName = @"C:\temp\MyExcelFile.xlsx"; ? ? ? ? ? ? ? ? FileInfo fileInfo = new FileInfo(fileName); ? ? ? ? ? ? ? ? excelPackage.SaveAs(fileInfo); ? ? ? ? ? ? } ? ? ? ? ? ? // 釋放資源 ? ? ? ? } ? ? } }
在這個示例代碼中,我們使用 ExcelPackage
類創(chuàng)建了一個新的工作簿對象,并使用它來創(chuàng)建了一個名為 "MySheet" 的工作表對象。然后,我們使用 Cells
屬性獲取單元格對象,并使用 SetValue()
方法向單元格寫入數(shù)據(jù)。最后,我們使用 ExcelPackage.SaveAs()
方法將 Excel 文件保存到磁盤,并使用 Dispose()
方法釋放工作簿對象的資源。
4. 使用 ClosedXML 組件導(dǎo)出 Excel 文件
使用 ClosedXML 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 ClosedXML 命名空間:在項目中添加對 ClosedXML 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建工作簿對象:使用
XLWorkbook
類創(chuàng)建一個新的工作簿對象。 - 獲取工作表對象:使用
AddWorksheet()
方法創(chuàng)建一個新的工作表對象,并設(shè)置工作表名稱。 - 設(shè)置單元格樣式:可以使用
IXLStyle
接口和IXLFont
接口來設(shè)置單元格樣式。 - 向單元格寫入數(shù)據(jù):使用
SetValue()
方法向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
SaveAs()
方法將 Excel 文件保存到磁盤。 - 釋放資源:使用
Dispose()
方法釋放工作簿對象的資源。
下面是一個示例代碼,演示如何使用 ClosedXML 組件導(dǎo)出 Excel 文件:
using System; using System.Data; using System.IO; using ClosedXML.Excel; namespace ExportExcelDemo { ? ? class Program ? ? { ? ? ? ? static void Main(string[] args) ? ? ? ? { ? ? ? ? ? ? // 創(chuàng)建一個 DataTable 對象來存儲數(shù)據(jù) ? ? ? ? ? ? DataTable dataTable = new DataTable("MyData"); ? ? ? ? ? ? // 添加列到 DataTable ? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string)); ? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int)); ? ? ? ? ? ? // 向 DataTable 中添加數(shù)據(jù)行 ? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30); ? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25); ? ? ? ? ? ? // 使用 ClosedXML 組件導(dǎo)出 Excel 文件 ? ? ? ? ? ? using (XLWorkbook workbook = new XLWorkbook()) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? IXLWorksheet worksheet = workbook.AddWorksheet("MySheet"); ? ? ? ? ? ? ? ? int row = 1; ? ? ? ? ? ? ? ? foreach (DataRow dataRow in dataTable.Rows) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? worksheet.Cell(row, 1).Value = dataRow["Name"].ToString(); ? ? ? ? ? ? ? ? ? ? worksheet.Cell(row, 2).Value = Convert.ToInt32(dataRow["Age"]); ? ? ? ? ? ? ? ? ? ? // 設(shè)置單元格樣式 ? ? ? ? ? ? ? ? ? ? worksheet.Cell(row, 2).Style.Font.Bold = true; ? ? ? ? ? ? ? ? ? ? worksheet.Cell(row, 2).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Right; ? ? ? ? ? ? ? ? ? ? row++; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? // 將 Excel 文件保存到磁盤 ? ? ? ? ? ? ? ? string fileName = @"C:\temp\MyExcelFile.xlsx"; ? ? ? ? ? ? ? ? workbook.SaveAs(fileName); ? ? ? ? ? ? } ? ? ? ? ? ? // 釋放資源 ? ? ? ? } ? ? } }
在這個示例代碼中,我們使用 XLWorkbook
類創(chuàng)建了一個新的工作簿對象,并使用它來創(chuàng)建了一個名為 "MySheet" 的工作表對象。然后,我們使用 Cell()
方法獲取單元格對象,并使用 SetValue()
方法向單元格寫入數(shù)據(jù)。接著,我們使用 IXLStyle
接口和 IXLFont
接口來設(shè)置單元格樣式。最后,我們使用 SaveAs()
方法將 Excel 文件保存到磁盤,并使用 Dispose()
方法釋放工作簿對象的資源。
總結(jié)
到此這篇關(guān)于C#導(dǎo)出Excel的幾種常見方式及詳細實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)C#導(dǎo)出Excel常用方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# / VB.NET 在PPT中創(chuàng)建、編輯PPT SmartArt圖形的方法詳解
本文介紹通過C#和VB.NET程序代碼來創(chuàng)建和編輯PPT文檔中的SmartArt圖形。文中將分兩個操作示例來演示創(chuàng)建和編輯結(jié)果,需要的朋友可以參考下2020-10-10c#入門之分支語句使用方法(三元運算符、if語句、switch語句)
這篇文章主要介紹了c#入門之分支語句使用方法,包括三元運算符、if語句、switch語句,需要的朋友可以參考下2014-04-04