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#中math类的全部运算方法(总结)

    C#中Math类的全部运算方法(总结) Math类是C#中一个非常重要的数学计算类,它提供了丰富的方法来对数字进行各种数学运算,比如绝对值、三角函数、对数、幂等函数等等。在本篇文章中,我将对Math类的全部运算方法进行详细的总结和解释,方便大家快速了解和应用。 绝对值和抹零函数 Math.Abs()方法 Math.Abs()方法可以返回一个数的绝对值。简单来…

    C# 2023年6月7日
    00
  • 基于DateTime.ParseExact方法的使用详解

    基于DateTime.ParseExact方法的使用详解 简介 C#中的DateTime.ParseExact方法是将字符串转化为DateTime类型的一种常用方式。它能够根据特定的格式将字符串解析成DateTime类型的值。在实际开发中,我们常常会遇到将字符串转化为日期类型的需求,而DateTime.ParseExact方法能够帮助我们实现这一目的。下面将…

    C# 2023年6月1日
    00
  • C#解决SQlite并发异常问题的方法(使用读写锁)

    让我来详细讲解“C#解决SQlite并发异常问题的方法(使用读写锁)”的完整攻略。 什么是SQlite并发异常问题 SQlite是一个非常流行的轻量级数据库,但由于其特殊的设计,使得它在并发访问时容易引发异常问题。例如,如果多个线程同时进行写操作,很容易引发数据被覆盖的情况,从而导致数据的不一致。 解决SQlite并发异常问题的方法 为了解决这个问题,我们可…

    C# 2023年5月31日
    00
  • c# .net 生成图片验证码的代码

    为了在C# .NET中生成图片验证码,我们可以遵循以下步骤: 步骤1:安装NuGet包 我们需要安装 ZXing 和 System.Drawing.Common 两个NuGet包,以便在C#代码中引用。 运行以下命令安装: Install-Package ZXing -Version 1.1.0 Install-Package System.Drawing.…

    C# 2023年5月31日
    00
  • C#实现窗体淡入淡出效果的方法总结

    C#实现窗体淡入淡出效果的方法总结 1. 引言 在C#编写窗体应用程序时,我们可能会需要为窗体增加各种特效来增强用户的体验感。其中,淡入淡出效果是一种比较常见的特效方式,可以使窗体的显示效果更加平滑自然。那么,本篇文章将对C#实现窗体淡入淡出效果的方法进行总结。 2. 方法总结 2.1 使窗体透明度渐变 首先,我们可以通过改变窗体的透明度,来实现窗体淡入淡出…

    C# 2023年6月7日
    00
  • C#8.0中的索引与范围功能介绍

    C#8.0中的索引与范围功能介绍 什么是索引 索引是一个整数值,用于表示集合中元素的位置。在C#8.0中,可以用^符号来引入反向索引。例如,^3表示倒数第三个元素。使用[]符号可以访问特定位置的元素。 下面是示例代码: int[] nums = { 1, 2, 3, 4, 5 }; Console.WriteLine(nums[^1]); // 输出 5 C…

    C# 2023年6月8日
    00
  • SQL Server中调用C#类中的方法实例(使用.NET程序集)

    在SQL Server中,可以使用CLR(Common Language Runtime)扩展来调用C#类中的方法实例。这里提供一个完整的攻略来演示如何在SQL Server中使用.NET程序集来调用C#类中的方法实例。 步骤一:创建.NET程序集 我们首先需要创建一个.NET程序集,其中包含一个C#类和一个方法实例。以下是一个示例程序集代码: using …

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

    String.ToUpper()的作用与使用方法 String.ToUpper()是C#中的字符串方法,意为将字符串转换为大写字母。该方法的作用是将字符串中的所有小写字母转换为大写字母。 语法 String.ToUpper() 的语法如下: public string ToUpper(); 该方法返回一个新字符串,表示原字符串中的所有小写字符都已被转换为大写…

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