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

 更新时间:2023年06月16日 11:36:47   作者:老衲有点帅  
excel导出在C#代码中应用己经很广泛了,我这里就做些总结,下面这篇文章主要给大家介绍了关于C#导出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() 方法释放工作簿对象的资源。 

总结

到此这篇关于C#导出Excel的几种常见方式及详细实现步骤的文章就介绍到这了,更多相关C#导出Excel常用方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解

    C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形的方法详解

    本文介绍通过C#和VB.NET程序代码来创建和编辑PPT文档中的SmartArt图形。文中将分两个操作示例来演示创建和编辑结果,需要的朋友可以参考下
    2020-10-10
  • C#中4种深拷贝方法介绍

    C#中4种深拷贝方法介绍

    这篇文章主要介绍了C#中4种深拷贝方法介绍,本文讲解了利用反射实现、利用xml序列化和反序列化实现、利用二进制序列化和反序列化实现、利用silverlight DataContractSerializer实现,用于在silverlight 客户端使用等4种方法,需要的朋友可以参考下
    2015-06-06
  • WPF中实现弹出进度条窗口的示例详解

    WPF中实现弹出进度条窗口的示例详解

    这篇文章主要为大家详细介绍了如何WPF中实现弹出进度条窗口,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • c#入门之分支语句使用方法(三元运算符、if语句、switch语句)

    c#入门之分支语句使用方法(三元运算符、if语句、switch语句)

    这篇文章主要介绍了c#入门之分支语句使用方法,包括三元运算符、if语句、switch语句,需要的朋友可以参考下
    2014-04-04
  • 学会使用C#异常

    学会使用C#异常

    在C#中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”。 异常通常由错误的代码引发,并由能够更正错误的代码进行catch。本文将对C#异常简要分析说明,下面就跟着小编一起来看下吧
    2016-12-12
  • C#多线程之取消架构介绍

    C#多线程之取消架构介绍

    这篇文章介绍了C#多线程之取消架构,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 使用C#自制一个Windows安装包的详细过程

    使用C#自制一个Windows安装包的详细过程

    这篇文章主要介绍了如何使用C#自制一个Windows安装包,文中通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • 基于C#检测敏感词功能

    基于C#检测敏感词功能

    这篇文章主要为大家详细介绍了如何基于C#实现检测敏感词功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-11-11
  • C#无损转换Image为Icon的方法

    C#无损转换Image为Icon的方法

    这篇文章主要为大家详细介绍了C#无损转换Image为Icon的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • C#中HashTable的定义与使用方法

    C#中HashTable的定义与使用方法

    Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,所以Hashtable可以支持任何类型的keyvalue键值对
    2012-12-12

最新评论