C#把DataTable导出为Excel文件

关于如何使用C#把DataTable导出为Excel文件,下面是一份详细的攻略:

1. 添加依赖库

使用Excel需要引入Office.dll,如果没有安装Microsoft Office,可以通过NuGet安装Microsoft.Office.Interop.Excel:

Install-Package Microsoft.Office.Interop.Excel

2. 导出DataTable到Excel

将DataTable导出为Excel文件通常是最常见的需求,下面是导出步骤:

(1) 创建Excel应用程序

首先创建一个Com对象,用于打开Excel运用程序:

var excelApp = new Microsoft.Office.Interop.Excel.Application();

(2) 创建工作簿

创建一个新的工作簿,并将DataTable填充在工作簿的第一个工作表中:

// 创建工作簿
var excelBook = excelApp.Workbooks.Add();
var excelSheet = excelBook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;

// 填充数据
for (var i = 0; i < dataTable.Rows.Count; i++)
{
    for (int j = 0; j < dataTable.Columns.Count; j++)
    {
        var data = dataTable.Rows[i][j];
        excelSheet.Cells[i + 1, j + 1] = data == null ? "" : data.ToString();
    }
}

(3) 保存并关闭Excel文件

将工作簿保存为Excel文件,并关闭Excel应用程序:

// 保存Excel文件
excelBook.SaveAs(filePath, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault);

// 释放Excel进程
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);

注意事项:Excel的COM对象是非托管代码,因此需要手动释放Excel进程。

示例说明

假如我们有一个DataTable如下:

DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Gender", typeof(string));
dt.Columns.Add("Age", typeof(int));
dt.Rows.Add(1, "John", "Male", 25);
dt.Rows.Add(2, "Lisa", "Female", 32);
dt.Rows.Add(3, "Mike", "Male", 40);
dt.Rows.Add(4, "Lucy", "Female", 27);

示例1:将DataTable导出为Excel文件

string filePath = "D:\\DataTableExport.xlsx";
ExportDataTableToExcel(dt, filePath);

运行以上代码即可把DataTable导出为Excel文件到指定路径。

示例2:将DataGridView中的数据导出为Excel

有时候我们需要把DataGridView中的数据导出为Excel文件,可以通过下面的代码实现。

string filePath = "D:\\DataGridViewExport.xlsx";
ExportDataGridViewToExcel(dataGridView1, filePath);
public static void ExportDataGridViewToExcel(DataGridView dataGridView, string filePath)
{
    // 创建Excel应用程序
    var excelApp = new Microsoft.Office.Interop.Excel.Application();

    // 创建工作簿
    var excelBook = excelApp.Workbooks.Add();
    var excelSheet = excelBook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;

    // 遍历DataGridView列
    for (int i = 1; i <= dataGridView.Columns.Count; i++)
    {
        // 将标题写入Excel表格
        excelSheet.Cells[1, i] = dataGridView.Columns[i - 1].HeaderText;

        // 遍历DataGridView行
        for (int j = 1; j <= dataGridView.Rows.Count; j++)
        {
            // 将数据写入Excel表格
            excelSheet.Cells[j + 1, i] = dataGridView.Rows[j - 1].Cells[i - 1].Value;
        }
    }

    // 保存Excel文件
    excelBook.SaveAs(filePath, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault);

    // 释放Excel进程
    excelApp.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
}

以上代码将DataGridView中的内容导出到Excel文件,并自动处理表头和数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#把DataTable导出为Excel文件 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • ASP.NET Core使用EF保存数据、级联删除和事务使用

    ASP.NET Core是一个开源的Web框架,支持多种平台,包括Windows、macOS和Linux等。在ASP.NET Core中,使用Entity Framework(EF)来操作数据库,可以很方便地进行数据的增删改查等操作。本文将详细介绍ASP.NET Core使用EF保存数据、级联删除和事务使用的完整攻略,同时附带两个示例说明。 一、ASP.NE…

    C# 2023年6月3日
    00
  • .Net中的序列化和反序列化详解

    下面是“.Net中的序列化和反序列化详解”的攻略: 什么是序列化和反序列化? 序列化是指将对象转换为可存储或传输的格式,反序列化则是将这些格式转换回对象。 在 .Net 中,对象序列化通过将其转换为二进制格式或 XML 文档来实现,允许在网络上发送、保存到磁盘或在应用程序之间传递对象。 .Net 实现对象序列化和反序列化 在 .Net 中,对象序列化和反序列…

    C# 2023年5月31日
    00
  • ASP.NET MVC实现登录后跳转到原界面

    ASP.NET MVC实现登录后跳转到原界面的完整攻略如下: 首先,在需要登录才能访问的控制器或方法上添加[Authorize]特性。例如: [Authorize] public class HomeController : Controller { public ActionResult Index() { return View(); } } 这样,当用…

    C# 2023年5月12日
    00
  • C#实现Ruby的负数索引器

    让我来详细讲解如何使用 C# 实现 Ruby 的负数索引器。 什么是 Ruby 的负数索引器 在 Ruby 中,我们可以使用负数索引器来从结尾开始访问数组元素。例如,一个包含 4 个元素的数组 arr,它们的索引分别为 0、1、2、3。如果我们想要访问最后一个元素,我们可以使用索引 -1,即 arr[-1]。类似的,如果我们想要访问倒数第二个元素,我们可以使…

    C# 2023年6月8日
    00
  • C#实现程序单例日志输出功能

    下面是详细的讲解“C#实现程序单例日志输出功能”的完整攻略。 什么是单例模式? 单例模式是一种设计模式,它保证一个类只有一个实例,并提供全局访问点来访问该实例。 实现单例模式 实现单例模式有多种方式,这里我介绍两种比较常用的方式。 方式一:懒汉式单例 懒汉式单例是指实例在第一次被使用时才被创建的单例。以下是示例代码: public class Singlet…

    C# 2023年5月15日
    00
  • C# 基于NPOI操作Excel

    C#基于NPOI操作Excel 在C#中,我们可以使用NPOI操作Excel文件。NPOI是一个开源的.NET库,它提供了对Microsoft Office的读取和写入支持。在本文中,我们将介绍使用NPOI操作Excel的完整攻略。 安装NPOI 要使用NPOI,我们需要先安装它。我们可以通过NuGet安装NPOI。在Visual Studio中,依次打开”…

    C# 2023年5月31日
    00
  • JQuery打造PHP的AJAX表单提交实例

    以下是“JQuery打造PHP的AJAX表单提交实例”的完整攻略,包括什么是AJAX表单提交、如何使用JQuery实现AJAX表单提交以及两个示例。 什么是AJAX表单提交? AJAX表单提交是指使用AJAX技术将表单数据提交到服务器,而无需刷新整个页面。AJAX表单提交可以提高用户体验,减少页面刷新次数,提高网站性能。 以下是使用AJAX技术提交表单的示例…

    C# 2023年5月15日
    00
  • C#实现简单获取及设置Session类

    下面就是有关“C#实现简单获取及设置Session类”的详细攻略。 1. Session类的简介 ASP.NET Session对象是服务器端用来保存当前用户会话所需要的信息的一个对象,它的使用可以让我们在多个页面中共享数据,并且在不同的请求之间保持数据的一致性。Session类的主要作用有两个:一是用来存储用户端与服务器端会话信息,二是用来跟踪用户在整个网…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部