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#基于委托实现多线程之间操作的方法”指的是在多线程开发中,使用委托实现线程间的通信和数据交互。下面是使用委托实现多线程之间操作的方法攻略: 1. 创建委托 首先要创建一个委托类型,来定义需要在不同线程之间传递的方法: delegate void MyDelegate(object obj); 这个委托类型可以传递一个对象,可以应用于各种类型的方法。 2.…

    C# 2023年6月7日
    00
  • ASP.NET MVC学习笔记

    ASP.NET MVC学习笔记 – 完整攻略 什么是 ASP.NET MVC ASP.NET MVC 是一种基于模型-视图-控制器(Model-View-Controller,MVC)模式的架构,它提供了一种让 Web 应用程序的逻辑和表现分离的方式。ASP.NET MVC 通过区分应用程序的逻辑(控制器)和 UI(视图)来改进应用程序的可测试性和可维护性。…

    C# 2023年5月31日
    00
  • C#使用selenium实现爬虫

    下面是详细讲解“C#使用selenium实现爬虫”的完整攻略: 一、什么是selenium selenium是一个自动化测试工具,能够模拟用户在浏览器中的操作。它支持多种编程语言,包括Java、Python、C#等,并且可以操作多种浏览器(包括Chrome、Firefox、Safari等)。在爬虫领域,selenium可以模拟用户操作,对JavaScript…

    C# 2023年5月15日
    00
  • C# 模式匹配完全指南

    C# 模式匹配完全指南 什么是 C# 模式匹配? C# 7.0 开始加入了一种新的特性,那就是模式匹配(Pattern Matching)。模式匹配的主要作用是用来匹配各种数据类型,从而简化我们的程序设计,并且让代码更加简洁易懂。 C# 模式匹配的类型 常量模式(Constant Patterns) 次类型模式(Type Patterns) 变量模式(Var…

    C# 2023年5月15日
    00
  • C# String.ToLower()方法: 将字符串转换为小写

    String.ToLower() 是 C# 的字符串方法,其作用是将一个字符串对象的所有字母字符转换成小写形式。 使用方法: string str = "EXAMPLE"; string lowerStr = str.ToLower(); 在上面的代码中,ToLower() 方法将字符串 str 转换成小写形式并存储到 lowerStr …

    C# 2023年4月19日
    00
  • Asp.net后台调用js 2种方法

    Asp.net后台调用js一般采用以下两种方法: 1. 注册js脚本 在后台代码中,通过Page.RegisterStartupScript方法注册js脚本。具体流程如下: string script = "<script>alert(‘Hello World!’)</script>"; // js脚本 Page.…

    C# 2023年5月31日
    00
  • C# 10分钟完成百度人脸识别(入门篇)

    C#10分钟完成百度人脸识别(入门篇) 简介 百度人脸识别是一项基于人工智能的技术,可以通过照片或视频中的人脸,进行识别、比对,以及人脸库管理等功能。本文主要介绍如何使用C#完成百度人脸识别的入门教程。 步骤 1. 创建百度AI账号 首先,你需要去百度AI开放平台官网注册一个账号,然后创建一个应用,选择人脸识别。在创建应用的时候,记得保存下“App ID”、…

    C# 2023年5月15日
    00
  • ASP.NET MVC使用异步TPL模式

    ASP.NET MVC使用异步TPL模式的完整攻略如下: 什么是TPL TPL,即Task Parallel Library,是.NET Framework 4.0及以上版本的一个并发处理库,用于在不同线程之间并发执行任务,提高程序的并发执行能力和性能。 为什么使用TPL 使用TPL可以带来以下几个好处: 提高程序性能:多个任务并行执行可以利用多CPU、多核…

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