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日

相关文章

  • 解析C#中断言与异常的应用方式及异常处理的流程控制

    解析C#中断言与异常的应用方式及异常处理的流程控制 断言的应用方式 在C#中,我们可以使用断言(Assert)来检测程序中的错误和异常。断言是一种用于检查代码逻辑的机制,通过在代码中加入断言,我们可以确保程序在运行时不会出现意料之外的行为,从而提高代码的质量和可靠性。 断言的基本使用方式如下: Debug.Assert(condition, message)…

    C# 2023年5月14日
    00
  • C#实现单件模式的三种常用方法

    C#实现单件模式的三种常用方法 在设计模式中,单件模式(Singleton Pattern)是一种常用的创建型设计模式,它能够确保一个类只有一个实例,并提供全局的访问点。在C#中,实现单件模式的方法比较多,本文将介绍其中的三种常用方法。 方法一:饿汉式(静态初始化) 饿汉式是最简单、常用的实现单件模式的方式之一。它在类加载时就创建了实例,因此线程安全,但是会…

    C# 2023年6月7日
    00
  • C#构造函数在基类和父类中的执行顺序

    C#中的构造函数是用来初始化类中的成员变量的特殊方法。在类继承中,派生类会继承基类的构造函数,同时也可以自定义自己的构造函数。 构造函数在派生类的实例化过程中,会按照一定的规则执行基类和派生类中的构造函数,其执行顺序如下: 先执行基类的构造函数。 继续执行派生类的构造函数。 这个顺序是由 C# 引入的可靠构造函数(Reliable Constructor)原…

    C# 2023年6月7日
    00
  • WinForm中的几个实用技巧汇总

    当然!首先,我们需要明确一下,WinForm中有哪些实用技巧值得总结。我自己的经验和理解是:界面美化、控件操作和数据绑定方面的技巧。接下来,我会对这三个方面分别进行详细的说明。 界面美化 WinForm中的界面美化,通常包括以下几个方面的技巧: 1. 更换窗体边框 因为WinForm默认的边框比较丑陋,所以我们通常会使用其他美观的边框,比如圆角边框、图片边框…

    C# 2023年6月7日
    00
  • unity实现鼠标经过时ui及物体的变色操作

    实现鼠标经过时UI及物体的变色操作是Unity游戏开发中常见的操作之一,在以下内容中,我将详细讲解如何实现这个功能。 步骤一:添加事件触发器组件 首先,在需要变色的UI或物体上添加Event Trigger组件。在该组件下选择PointerEnter和PointerExit事件,并在事件右侧选择Add New。这样就可以添加新的触发事件。 在PointerE…

    C# 2023年6月3日
    00
  • 如何使用Swagger上传文件

    Swagger是一种流行的API文档工具,它可以帮助开发人员快速创建和测试API。在Swagger中,可以使用Swagger UI来测试API,其中包括上传文件的功能。下面是如何使用Swagger上传文件的完整攻略: 步骤一:安装Swagger 首先,需要安装Swagger。可以使用以下命令在.NET Core应用程序中安装Swagger: dotnet a…

    C# 2023年5月17日
    00
  • C#如何使用Task执行异步操作

    C# 中提供了 Task 类型,可以轻松地执行异步操作,下面是关于 Task 的详细攻略: 1. Task 的基本使用方法 Task 提供了许多方法来启动新的任务,其中最常见的方法是 Task.Run。以下是使用 Task.Run 执行异步操作的示例: static async Task<int> CalculateSumAsync() { in…

    C# 2023年5月15日
    00
  • asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)

    下面是详细讲解“asp.net连接查询SQL数据库并把结果显示在网页上(2种方法)”的完整攻略。 1. 简介 ASP.NET是Microsoft开发的一种Web应用程序开发技术,它使用.NET框架,支持多种编程语言,如C#、VB等。在ASP.NET中,我们可以使用ADO.NET连接到SQL Server数据库并执行查询操作,然后把结果显示在网页上。 2. 方…

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