C# 常用Excel导出的几种常见方式及实现步骤
创始人
2024-11-05 22:38:19
0

目录

常用Excel导出方式

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

2.使用 NPOI 组件导出 Excel 文件

 3.使用 EPPlus 组件导出Excel文件

4. 使用 ClosedXML 组件导出 Excel 文件


常用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. 创建工作簿对象:使用 HSSFWorkbookXSSFWorkbook 类创建一个新的工作簿对象,分别对应于 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() 方法释放工作簿对象的资源。 

相关内容

热门资讯

正版授权!金花房卡批发价神牛大... 神牛大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
正规平台有哪些,金花充值房卡江... 正规平台有哪些,金花充值房卡江山大厅/微信链接房卡充值链接Sa9Ix苹果iPhone 17手机即将进...
IA解析/金花房卡专卖店天龙大... 天龙大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科技实测!微信金花房卡怎么弄南... 南瓜大厅/新道游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
推荐一款!金花房卡是正规的新天... 推荐一款!金花房卡是正规的新天王/老夫子大厅/房卡价格表多少钱一张Sa9Ix苹果iPhone 17手...
正版授权!怎么买斗牛房卡起点大... 今 日消息,起点大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
正规平台有哪些,斗牛房卡充值九... 正规平台有哪些,斗牛房卡充值九天大厅/微信链接房间卡怎么购买九天大厅是一款非常受欢迎的游戏,咨询房/...
IA解析/怎么买斗牛房卡新九天... 微信游戏中心:新九天大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小...
终于找到“金花房卡一手货源/新... 新永和是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
ia实测“微信炸金花房间怎么创... 新众亿金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡...
金花房卡购买正规渠道/微信链接... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
微信炸金花链接怎样弄/金花链接... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
牛牛链接房卡那里有/微信房卡斗... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
怎样购买微信金花房卡/微信牛牛... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来享...
微信牛牛链接金花房卡/微信链接... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
给大家讲解“购买斗牛金花房卡联... 悟空大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
哪里有卖微信炸金花房卡/微信牛... 微信炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
金花房卡从哪里购买/炸金花房卡... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
软件炸金花模式创建开房卡/微信... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
终于找到“购买金花房卡联系方式... 新八戒是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享...