您当前的位置:首页 > 文章 > C# 常用Excel导出的几种常见方式及实现步骤

C# 常用Excel导出的几种常见方式及实现步骤

作者:老衲有点帅 时间:2023-07-26 阅读数:380 人阅读

常用Excel导出方式

在 C# 中,常用的Excel 文件导出 方式包括:

  1. 使用 Microsoft Office Interop Excel 组件:这是一种使用 Microsoft Excel 应用程序对象模型来创建和编辑 Excel 文件的方式。它提供了强大的功能,但需要安装 Microsoft Excel 或者 Microsoft Office 套件。

  2. 使用 NPOI 组件:NPOI 是一个 C#/.NET 平台上的开源组件,它可以读写 Microsoft Office 格式的文档,包括 Excel、Word 和 PowerPoint 等。相比于 Interop Excel 组件,NPOI 更加轻量级,不需要依赖于 Microsoft Excel 应用程序。

  3. 使用 EPPlus 组件:EPPlus 是一个免费的开源组件,它可以创建和读取 Excel 文件。它提供了一些方便的方法,如对单元格格式、图表、公式等进行操作。EPPlus 支持 .NET Framework 3.5 及更高版本,并不需要依赖于 Microsoft Excel 应用程序。

  4. 使用 ClosedXML 组件:ClosedXML 是一个简单易用的开源组件,它可以读取、创建和修改 Excel 文件。与 EPPlus 类似,它也提供了一些方便的方法来操纵 Excel 文件。ClosedXML 支持 .NET Framework 4.0 及更高版本。

以上是常用的几种 C# 导出 Excel 文件的方式,每种方式都有其特点和优缺点,选择适合自己需求的方式进行开发即可。以下针对每种导出方式,罗列了具体步骤以及Demo。

1.使用 Microsoft Office Interop Excel 组件导出 Excel 文件

使用 Microsoft Office Interop Excel 组件导出 Excel 文件的步骤如下:

  1. 引用 Microsoft.Office.Interop.Excel 命名空间:在项目中添加对 Microsoft.Office.Interop.Excel 的引用,或者使用 NuGet 包管理器安装它。

  2. 创建 Excel 应用程序对象:使用Application类创建一个 Excel 应用程序对象。

  3. 创建工作簿对象:使用Application.Workbooks.Add()方法创建一个新的工作簿对象。

  4. 获取工作表对象:使用Workbook.Worksheets属性获取工作表集合,并使用索引或名称获取工作表对象。

  5. 向单元格写入数据:使用Worksheet.Cells属性获取单元格对象,并使用Range.Value属性或Range.Formula属性向单元格写入数据。

  6. 保存 Excel 文件:使用Workbook.SaveAs()方法将 Excel 文件保存到磁盘。

  7. 关闭 Excel 应用程序和工作簿对象:使用Workbook.Close()方法关闭工作簿对象,并使用Application.Quit()方法关闭 Excel 应用程序对象。

  8. 释放资源:使用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 文件的步骤如下:

  1. 引用 NPOI 命名空间:在项目中添加对 NPOI 的引用,或者使用 NuGet 包管理器安装它。

  2. 创建工作簿对象:使用HSSFWorkbook或XSSFWorkbook类创建一个新的工作簿对象,分别对应于 Excel 的 .xls 和 .xlsx 格式。

  3. 获取工作表对象:使用CreateSheet()方法创建一个新的工作表对象,并设置工作表名称。

  4. 设置单元格样式:可以使用CellStyle类和Font类来设置单元格样式。

  5. 向单元格写入数据:使用CreateRow()方法创建一个新的行对象,使用CreateCell()方法创建一个新的单元格对象,并使用SetValue()方法向单元格写入数据。

  6. 保存 Excel 文件:使用FileStream类将 Excel 文件保存到磁盘。

  7. 释放资源:使用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 文件的步骤如下:

  1. 引用 EPPlus 命名空间:在项目中添加对 EPPlus 的引用,或者使用 NuGet 包管理器安装它。

  2. 创建工作簿对象:使用ExcelPackage类创建一个新的工作簿对象。

  3. 获取工作表对象:使用Workbook.Worksheets.Add()方法创建一个新的工作表对象,并设置工作表名称。

  4. 设置单元格样式:可以使用ExcelRange.Style属性来设置单元格样式。

  5. 向单元格写入数据:使用SetValue()方法向单元格写入数据。

  6. 保存 Excel 文件:使用ExcelPackage.SaveAs()方法将 Excel 文件保存到磁盘。

  7. 释放资源:使用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 文件的步骤如下:

  1. 引用 ClosedXML 命名空间:在项目中添加对 ClosedXML 的引用,或者使用 NuGet 包管理器安装它。

  2. 创建工作簿对象:使用XLWorkbook类创建一个新的工作簿对象。

  3. 获取工作表对象:使用AddWorksheet()方法创建一个新的工作表对象,并设置工作表名称。

  4. 设置单元格样式:可以使用IXLStyle接口和IXLFont接口来设置单元格样式。

  5. 向单元格写入数据:使用SetValue()方法向单元格写入数据。

  6. 保存 Excel 文件:使用SaveAs()方法将 Excel 文件保存到磁盘。

  7. 释放资源:使用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