C#導(dǎo)出Excel的幾種常見方式及詳細(xì)實(shí)現(xiàn)步驟
常用Excel導(dǎo)出方式
在 C# 中,常用的Excel 文件導(dǎo)出 方式包括:
- 使用 Microsoft Office Interop Excel 組件:這是一種使用 Microsoft Excel 應(yīng)用程序?qū)ο竽P蛠韯?chuàng)建和編輯 Excel 文件的方式。它提供了強(qiáng)大的功能,但需要安裝 Microsoft Excel 或者 Microsoft Office 套件。
- 使用 NPOI 組件:NPOI 是一個(gè) C#/.NET 平臺(tái)上的開源組件,它可以讀寫 Microsoft Office 格式的文檔,包括 Excel、Word 和 PowerPoint 等。相比于 Interop Excel 組件,NPOI 更加輕量級(jí),不需要依賴于 Microsoft Excel 應(yīng)用程序。
- 使用 EPPlus 組件:EPPlus 是一個(gè)免費(fèi)的開源組件,它可以創(chuàng)建和讀取 Excel 文件。它提供了一些方便的方法,如對(duì)單元格格式、圖表、公式等進(jìn)行操作。EPPlus 支持 .NET Framework 3.5 及更高版本,并不需要依賴于 Microsoft Excel 應(yīng)用程序。
- 使用 ClosedXML 組件:ClosedXML 是一個(gè)簡(jiǎn)單易用的開源組件,它可以讀取、創(chuàng)建和修改 Excel 文件。與 EPPlus 類似,它也提供了一些方便的方法來操縱 Excel 文件。ClosedXML 支持 .NET Framework 4.0 及更高版本。
以上是常用的幾種 C# 導(dǎo)出 Excel 文件的方式,每種方式都有其特點(diǎn)和優(yōu)缺點(diǎn),選擇適合自己需求的方式進(jìn)行開發(fā)即可。以下針對(duì)每種導(dǎo)出方式,羅列了具體步驟以及Demo。
1.使用 Microsoft Office Interop Excel 組件導(dǎo)出 Excel 文件
使用 Microsoft Office Interop Excel 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 Microsoft.Office.Interop.Excel 命名空間:在項(xiàng)目中添加對(duì) Microsoft.Office.Interop.Excel 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建 Excel 應(yīng)用程序?qū)ο螅菏褂?
Application類創(chuàng)建一個(gè) Excel 應(yīng)用程序?qū)ο蟆?/li> - 創(chuàng)建工作簿對(duì)象:使用
Application.Workbooks.Add()方法創(chuàng)建一個(gè)新的工作簿對(duì)象。 - 獲取工作表對(duì)象:使用
Workbook.Worksheets屬性獲取工作表集合,并使用索引或名稱獲取工作表對(duì)象。 - 向單元格寫入數(shù)據(jù):使用
Worksheet.Cells屬性獲取單元格對(duì)象,并使用Range.Value屬性或Range.Formula屬性向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
Workbook.SaveAs()方法將 Excel 文件保存到磁盤。 - 關(guān)閉 Excel 應(yīng)用程序和工作簿對(duì)象:使用
Workbook.Close()方法關(guān)閉工作簿對(duì)象,并使用Application.Quit()方法關(guān)閉 Excel 應(yīng)用程序?qū)ο蟆?/li> - 釋放資源:使用
Marshal.ReleaseComObject()方法釋放 Excel 應(yīng)用程序?qū)ο蠛凸ぷ鞑緦?duì)象的資源。
下面是一個(gè)示例代碼,演示如何使用 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)建一個(gè) DataTable 對(duì)象來存儲(chǔ)數(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)用程序和工作簿對(duì)象,并釋放資源
workbook.Close();
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
}
}
}在這個(gè)示例代碼中,我們使用 Application 類創(chuàng)建了一個(gè) Excel 應(yīng)用程序?qū)ο螅⑹褂盟鼇韯?chuàng)建了一個(gè)新的工作簿對(duì)象。然后,我們使用 Workbook.Worksheets 屬性獲取工作表集合,并使用索引獲取了第一個(gè)工作表對(duì)象。接下來,我們使用 Worksheet.Cells 屬性獲取單元格對(duì)象,并使用 Range.Value 屬性或 Range.Formula 屬性向單元格寫入數(shù)據(jù)。最后,我們使用 Workbook.SaveAs() 方法將 Excel 文件保存到磁盤,關(guān)閉了工作簿對(duì)象和 Excel 應(yīng)用程序?qū)ο?,并釋放了它們的資源。
2.使用 NPOI 組件導(dǎo)出 Excel 文件
使用 NPOI 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 NPOI 命名空間:在項(xiàng)目中添加對(duì) NPOI 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建工作簿對(duì)象:使用
HSSFWorkbook或XSSFWorkbook類創(chuàng)建一個(gè)新的工作簿對(duì)象,分別對(duì)應(yīng)于 Excel 的 .xls 和 .xlsx 格式。 - 獲取工作表對(duì)象:使用
CreateSheet()方法創(chuàng)建一個(gè)新的工作表對(duì)象,并設(shè)置工作表名稱。 - 設(shè)置單元格樣式:可以使用
CellStyle類和Font類來設(shè)置單元格樣式。 - 向單元格寫入數(shù)據(jù):使用
CreateRow()方法創(chuàng)建一個(gè)新的行對(duì)象,使用CreateCell()方法創(chuàng)建一個(gè)新的單元格對(duì)象,并使用SetValue()方法向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
FileStream類將 Excel 文件保存到磁盤。 - 釋放資源:使用
Dispose()方法釋放工作簿對(duì)象和 FileStream 對(duì)象的資源。
下面是一個(gè)示例代碼,演示如何使用 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)建一個(gè) DataTable 對(duì)象來存儲(chǔ)數(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();
? ? ? ? }
? ? }
}在這個(gè)示例代碼中,我們使用 HSSFWorkbook 類創(chuàng)建了一個(gè)新的工作簿對(duì)象,并使用它來創(chuàng)建了一個(gè)名為 "MySheet" 的工作表對(duì)象。然后,我們使用 CreateRow() 方法和 CreateCell() 方法創(chuàng)建了新的行對(duì)象和單元格對(duì)象,并使用 SetValue() 方法向單元格寫入數(shù)據(jù)。最后,我們使用 FileStream 類將 Excel 文件保存到磁盤,并使用 Dispose() 方法釋放工作簿對(duì)象的資源。如果需要生成 .xlsx 格式的文件,可以使用 XSSFWorkbook 類代替 HSSFWorkbook 類。
3.使用 EPPlus 組件導(dǎo)出Excel文件
使用 EPPlus 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 EPPlus 命名空間:在項(xiàng)目中添加對(duì) EPPlus 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建工作簿對(duì)象:使用
ExcelPackage類創(chuàng)建一個(gè)新的工作簿對(duì)象。 - 獲取工作表對(duì)象:使用
Workbook.Worksheets.Add()方法創(chuàng)建一個(gè)新的工作表對(duì)象,并設(shè)置工作表名稱。 - 設(shè)置單元格樣式:可以使用
ExcelRange.Style屬性來設(shè)置單元格樣式。 - 向單元格寫入數(shù)據(jù):使用
SetValue()方法向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
ExcelPackage.SaveAs()方法將 Excel 文件保存到磁盤。 - 釋放資源:使用
Dispose()方法釋放工作簿對(duì)象的資源。
下面是一個(gè)示例代碼,演示如何使用 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)建一個(gè) DataTable 對(duì)象來存儲(chǔ)數(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);
? ? ? ? ? ? }
? ? ? ? ? ? // 釋放資源
? ? ? ? }
? ? }
}在這個(gè)示例代碼中,我們使用 ExcelPackage 類創(chuàng)建了一個(gè)新的工作簿對(duì)象,并使用它來創(chuàng)建了一個(gè)名為 "MySheet" 的工作表對(duì)象。然后,我們使用 Cells 屬性獲取單元格對(duì)象,并使用 SetValue() 方法向單元格寫入數(shù)據(jù)。最后,我們使用 ExcelPackage.SaveAs() 方法將 Excel 文件保存到磁盤,并使用 Dispose() 方法釋放工作簿對(duì)象的資源。
4. 使用 ClosedXML 組件導(dǎo)出 Excel 文件
使用 ClosedXML 組件導(dǎo)出 Excel 文件的步驟如下:
- 引用 ClosedXML 命名空間:在項(xiàng)目中添加對(duì) ClosedXML 的引用,或者使用 NuGet 包管理器安裝它。
- 創(chuàng)建工作簿對(duì)象:使用
XLWorkbook類創(chuàng)建一個(gè)新的工作簿對(duì)象。 - 獲取工作表對(duì)象:使用
AddWorksheet()方法創(chuàng)建一個(gè)新的工作表對(duì)象,并設(shè)置工作表名稱。 - 設(shè)置單元格樣式:可以使用
IXLStyle接口和IXLFont接口來設(shè)置單元格樣式。 - 向單元格寫入數(shù)據(jù):使用
SetValue()方法向單元格寫入數(shù)據(jù)。 - 保存 Excel 文件:使用
SaveAs()方法將 Excel 文件保存到磁盤。 - 釋放資源:使用
Dispose()方法釋放工作簿對(duì)象的資源。
下面是一個(gè)示例代碼,演示如何使用 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)建一個(gè) DataTable 對(duì)象來存儲(chǔ)數(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);
? ? ? ? ? ? }
? ? ? ? ? ? // 釋放資源
? ? ? ? }
? ? }
}在這個(gè)示例代碼中,我們使用 XLWorkbook 類創(chuàng)建了一個(gè)新的工作簿對(duì)象,并使用它來創(chuàng)建了一個(gè)名為 "MySheet" 的工作表對(duì)象。然后,我們使用 Cell() 方法獲取單元格對(duì)象,并使用 SetValue() 方法向單元格寫入數(shù)據(jù)。接著,我們使用 IXLStyle 接口和 IXLFont 接口來設(shè)置單元格樣式。最后,我們使用 SaveAs() 方法將 Excel 文件保存到磁盤,并使用 Dispose() 方法釋放工作簿對(duì)象的資源。
總結(jié)
到此這篇關(guān)于C#導(dǎo)出Excel的幾種常見方式及詳細(xì)實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)C#導(dǎo)出Excel常用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)簡(jiǎn)易畫圖板的示例代碼
這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)易畫圖板的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
c#實(shí)現(xiàn)網(wǎng)站監(jiān)控查看是否正常示例
這篇文章主要介紹了使用c#監(jiān)控網(wǎng)站是否正常的功能示例,大家參考使用吧2014-01-01
淺拷貝和深拷貝深入理解(shallow copy VS deep copy)
淺拷貝和深拷貝深入理解(shallow copy VS deep copy) 本文重點(diǎn)討論引用類型變量的拷貝機(jī)制和實(shí)現(xiàn)2014-01-01
C#實(shí)現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)位圖轉(zhuǎn)換成圖標(biāo)的方法,可實(shí)現(xiàn)將bmp格式位圖轉(zhuǎn)換成ico格式圖標(biāo)的功能,需要的朋友可以參考下2015-06-06

