C#導出Excel的幾種常見方式及詳細實現(xiàn)步驟
常用Excel導出方式
在 C# 中,常用的Excel 文件導出 方式包括:
- 使用 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# 導出 Excel 文件的方式,每種方式都有其特點和優(yōu)缺點,選擇適合自己需求的方式進行開發(fā)即可。以下針對每種導出方式,羅列了具體步驟以及Demo。
1.使用 Microsoft Office Interop Excel 組件導出 Excel 文件
使用 Microsoft Office Interop Excel 組件導出 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 組件導出 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 組件導出 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 組件導出 Excel 文件
使用 NPOI 組件導出 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 組件導出 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 組件導出 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 組件導出Excel文件
使用 EPPlus 組件導出 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 組件導出 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 組件導出 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 組件導出 Excel 文件
使用 ClosedXML 組件導出 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 組件導出 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 組件導出 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#導出Excel的幾種常見方式及詳細實現(xiàn)步驟的文章就介紹到這了,更多相關(guān)C#導出Excel常用方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c#實現(xiàn)網(wǎng)站監(jiān)控查看是否正常示例
這篇文章主要介紹了使用c#監(jiān)控網(wǎng)站是否正常的功能示例,大家參考使用吧2014-01-01
淺拷貝和深拷貝深入理解(shallow copy VS deep copy)
淺拷貝和深拷貝深入理解(shallow copy VS deep copy) 本文重點討論引用類型變量的拷貝機制和實現(xiàn)2014-01-01

