C# 常用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()方法释放工作簿对象的资源。
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com