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
 
				 
				