C# 常用Excel导出的几种常见方式及实现步骤
目錄
常用Excel導出方式
1.使用 Microsoft Office Interop Excel 組件導出 Excel 文件
2.使用 NPOI 組件導出 Excel 文件
?3.使用 EPPlus 組件導出Excel文件
4.?使用 ClosedXML 組件導出 Excel 文件
常用Excel導出方式
在 C# 中,常用的Excel 文件導出 方式包括:
使用 Microsoft Office Interop Excel 組件:這是一種使用 Microsoft Excel 應用程序對象模型來創建和編輯 Excel 文件的方式。它提供了強大的功能,但需要安裝 Microsoft Excel 或者 Microsoft Office 套件。
使用 NPOI 組件:NPOI 是一個 C#/.NET 平臺上的開源組件,它可以讀寫 Microsoft Office 格式的文檔,包括 Excel、Word 和 PowerPoint 等。相比于 Interop Excel 組件,NPOI 更加輕量級,不需要依賴于 Microsoft Excel 應用程序。
使用 EPPlus 組件:EPPlus 是一個免費的開源組件,它可以創建和讀取 Excel 文件。它提供了一些方便的方法,如對單元格格式、圖表、公式等進行操作。EPPlus 支持 .NET Framework 3.5 及更高版本,并不需要依賴于 Microsoft Excel 應用程序。
使用 ClosedXML 組件:ClosedXML 是一個簡單易用的開源組件,它可以讀取、創建和修改 Excel 文件。與 EPPlus 類似,它也提供了一些方便的方法來操縱 Excel 文件。ClosedXML 支持 .NET Framework 4.0 及更高版本。
以上是常用的幾種 C# 導出 Excel 文件的方式,每種方式都有其特點和優缺點,選擇適合自己需求的方式進行開發即可。以下針對每種導出方式,羅列了具體步驟以及Demo。
1.使用 Microsoft Office Interop Excel 組件導出 Excel 文件
使用 Microsoft Office Interop Excel 組件導出 Excel 文件的步驟如下:
引用 Microsoft.Office.Interop.Excel 命名空間:在項目中添加對 Microsoft.Office.Interop.Excel 的引用,或者使用 NuGet 包管理器安裝它。
創建 Excel 應用程序對象:使用 Application 類創建一個 Excel 應用程序對象。
創建工作簿對象:使用 Application.Workbooks.Add() 方法創建一個新的工作簿對象。
獲取工作表對象:使用 Workbook.Worksheets 屬性獲取工作表集合,并使用索引或名稱獲取工作表對象。
向單元格寫入數據:使用 Worksheet.Cells 屬性獲取單元格對象,并使用 Range.Value 屬性或 Range.Formula 屬性向單元格寫入數據。
保存 Excel 文件:使用 Workbook.SaveAs() 方法將 Excel 文件保存到磁盤。
關閉 Excel 應用程序和工作簿對象:使用 Workbook.Close() 方法關閉工作簿對象,并使用 Application.Quit() 方法關閉 Excel 應用程序對象。
釋放資源:使用 Marshal.ReleaseComObject() 方法釋放 Excel 應用程序對象和工作簿對象的資源。
下面是一個示例代碼,演示如何使用 Microsoft Office Interop Excel 組件導出 Excel 文件:
using System;
using System.Data;
using System.IO;
using Microsoft.Office.Interop.Excel;
namespace ExportExcelDemo
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? // 創建一個 DataTable 對象來存儲數據
? ? ? ? ? ? DataTable dataTable = new DataTable("MyData");
? ? ? ? ? ? // 添加列到 DataTable
? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string));
? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int));
? ? ? ? ? ? // 向 DataTable 中添加數據行
? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30);
? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25);
? ? ? ? ? ? // 使用 Microsoft Office Interop Excel 組件導出 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);
? ? ? ? ? ? // 關閉 Excel 應用程序和工作簿對象,并釋放資源
? ? ? ? ? ? workbook.Close();
? ? ? ? ? ? excelApp.Quit();
? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
? ? ? ? ? ? System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
? ? ? ? }
? ? }
}
在這個示例代碼中,我們使用 Application 類創建了一個 Excel 應用程序對象,并使用它來創建了一個新的工作簿對象。然后,我們使用 Workbook.Worksheets 屬性獲取工作表集合,并使用索引獲取了第一個工作表對象。接下來,我們使用 Worksheet.Cells 屬性獲取單元格對象,并使用 Range.Value 屬性或 Range.Formula 屬性向單元格寫入數據。最后,我們使用 Workbook.SaveAs() 方法將 Excel 文件保存到磁盤,關閉了工作簿對象和 Excel 應用程序對象,并釋放了它們的資源。?
2.使用 NPOI 組件導出 Excel 文件
使用 NPOI 組件導出 Excel 文件的步驟如下:
引用 NPOI 命名空間:在項目中添加對 NPOI 的引用,或者使用 NuGet 包管理器安裝它。
創建工作簿對象:使用 HSSFWorkbook 或 XSSFWorkbook 類創建一個新的工作簿對象,分別對應于 Excel 的 .xls 和 .xlsx 格式。
獲取工作表對象:使用 CreateSheet() 方法創建一個新的工作表對象,并設置工作表名稱。
設置單元格樣式:可以使用 CellStyle 類和 Font 類來設置單元格樣式。
向單元格寫入數據:使用 CreateRow() 方法創建一個新的行對象,使用 CreateCell() 方法創建一個新的單元格對象,并使用 SetValue() 方法向單元格寫入數據。
保存 Excel 文件:使用 FileStream 類將 Excel 文件保存到磁盤。
釋放資源:使用 Dispose() 方法釋放工作簿對象和 FileStream 對象的資源。
下面是一個示例代碼,演示如何使用 NPOI 組件導出 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)
? ? ? ? {
? ? ? ? ? ? // 創建一個 DataTable 對象來存儲數據
? ? ? ? ? ? DataTable dataTable = new DataTable("MyData");
? ? ? ? ? ? // 添加列到 DataTable
? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string));
? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int));
? ? ? ? ? ? // 向 DataTable 中添加數據行
? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30);
? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25);
? ? ? ? ? ? // 使用 NPOI 組件導出 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 類創建了一個新的工作簿對象,并使用它來創建了一個名為 "MySheet" 的工作表對象。然后,我們使用 CreateRow() 方法和 CreateCell() 方法創建了新的行對象和單元格對象,并使用 SetValue() 方法向單元格寫入數據。最后,我們使用 FileStream 類將 Excel 文件保存到磁盤,并使用 Dispose() 方法釋放工作簿對象的資源。如果需要生成 .xlsx 格式的文件,可以使用 XSSFWorkbook 類代替 HSSFWorkbook 類。
?3.使用 EPPlus 組件導出Excel文件
使用 EPPlus 組件導出 Excel 文件的步驟如下:
引用 EPPlus 命名空間:在項目中添加對 EPPlus 的引用,或者使用 NuGet 包管理器安裝它。
創建工作簿對象:使用 ExcelPackage 類創建一個新的工作簿對象。
獲取工作表對象:使用 Workbook.Worksheets.Add() 方法創建一個新的工作表對象,并設置工作表名稱。
設置單元格樣式:可以使用 ExcelRange.Style 屬性來設置單元格樣式。
向單元格寫入數據:使用 SetValue() 方法向單元格寫入數據。
保存 Excel 文件:使用 ExcelPackage.SaveAs() 方法將 Excel 文件保存到磁盤。
釋放資源:使用 Dispose() 方法釋放工作簿對象的資源。
下面是一個示例代碼,演示如何使用 EPPlus 組件導出 Excel 文件:
using System;
using System.Data;
using System.IO;
using OfficeOpenXml;
namespace ExportExcelDemo
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? // 創建一個 DataTable 對象來存儲數據
? ? ? ? ? ? DataTable dataTable = new DataTable("MyData");
? ? ? ? ? ? // 添加列到 DataTable
? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string));
? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int));
? ? ? ? ? ? // 向 DataTable 中添加數據行
? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30);
? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25);
? ? ? ? ? ? // 使用 EPPlus 組件導出 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 類創建了一個新的工作簿對象,并使用它來創建了一個名為 "MySheet" 的工作表對象。然后,我們使用 Cells 屬性獲取單元格對象,并使用 SetValue() 方法向單元格寫入數據。最后,我們使用 ExcelPackage.SaveAs() 方法將 Excel 文件保存到磁盤,并使用 Dispose() 方法釋放工作簿對象的資源。
4.?使用 ClosedXML 組件導出 Excel 文件
使用 ClosedXML 組件導出 Excel 文件的步驟如下:
引用 ClosedXML 命名空間:在項目中添加對 ClosedXML 的引用,或者使用 NuGet 包管理器安裝它。
創建工作簿對象:使用 XLWorkbook 類創建一個新的工作簿對象。
獲取工作表對象:使用 AddWorksheet() 方法創建一個新的工作表對象,并設置工作表名稱。
設置單元格樣式:可以使用 IXLStyle 接口和 IXLFont 接口來設置單元格樣式。
向單元格寫入數據:使用 SetValue() 方法向單元格寫入數據。
保存 Excel 文件:使用 SaveAs() 方法將 Excel 文件保存到磁盤。
釋放資源:使用 Dispose() 方法釋放工作簿對象的資源。
下面是一個示例代碼,演示如何使用 ClosedXML 組件導出 Excel 文件:
using System;
using System.Data;
using System.IO;
using ClosedXML.Excel;
namespace ExportExcelDemo
{
? ? class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? // 創建一個 DataTable 對象來存儲數據
? ? ? ? ? ? DataTable dataTable = new DataTable("MyData");
? ? ? ? ? ? // 添加列到 DataTable
? ? ? ? ? ? dataTable.Columns.Add("Name", typeof(string));
? ? ? ? ? ? dataTable.Columns.Add("Age", typeof(int));
? ? ? ? ? ? // 向 DataTable 中添加數據行
? ? ? ? ? ? dataTable.Rows.Add("John Doe", 30);
? ? ? ? ? ? dataTable.Rows.Add("Jane Smith", 25);
? ? ? ? ? ? // 使用 ClosedXML 組件導出 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"]);
? ? ? ? ? ? ? ? ? ? // 設置單元格樣式
? ? ? ? ? ? ? ? ? ? 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 類創建了一個新的工作簿對象,并使用它來創建了一個名為 "MySheet" 的工作表對象。然后,我們使用 Cell() 方法獲取單元格對象,并使用 SetValue() 方法向單元格寫入數據。接著,我們使用 IXLStyle 接口和 IXLFont 接口來設置單元格樣式。最后,我們使用 SaveAs() 方法將 Excel 文件保存到磁盤,并使用 Dispose() 方法釋放工作簿對象的資源。?
總結
以上是生活随笔為你收集整理的C# 常用Excel导出的几种常见方式及实现步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于宽哥英语课,本人的遭遇
- 下一篇: 含磷废水的处理方法