C#将DataTable中的数据导出到Excel

作为一名程序猿,常常遇到用户要导出数据的情况,其中将DataTable中的数据导出到excel最为频繁。这个问题虽然简单,但是我尝试找了一下,百度上居然没有标准答案,遂记录一下自己的方法,以供后人参考。

前置条件:引用Microsoft.Office.Interop.Excel库

using System;
using System.Data;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExportDataTableToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            // 创建一个 DataTable 并添加数据(这里只是示例数据)
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("ID", typeof(int));
            dataTable.Columns.Add("Name", typeof(string));
            dataTable.Rows.Add(1, "John");
            dataTable.Rows.Add(2, "Alice");
            dataTable.Rows.Add(3, "Bob");

            // 调用导出到 Excel 的方法
            ExportToExcel(dataTable);
        }

        static void ExportToExcel(DataTable dataTable)
        {
            Excel.Application excelApp = new Excel.Application();
            excelApp.Visible = true; // 设置 Excel 可见(可选)

            Excel.Workbook workbook = excelApp.Workbooks.Add();
            Excel.Worksheet worksheet = workbook.Sheets[1];
            
            try
            {
                // 将 DataTable 中的数据导入 Excel 工作表
                for (int i = 0; i < dataTable.Columns.Count; i++)
                {
                    worksheet.Cells[1, i + 1] = dataTable.Columns[i].ColumnName;
                }

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    for (int j = 0; j < dataTable.Columns.Count; j++)
                    {
                        worksheet.Cells[i + 2, j + 1] = dataTable.Rows[i][j];
                    }
                }

                // 保存 Excel 文件
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.Filter = "Excel 文件 (*.xlsx)|*.xlsx";
                saveDialog.FilterIndex = 2;
                saveDialog.FileName = "导出数据.xlsx";

                if (saveDialog.ShowDialog() == DialogResult.OK)
                {
                    workbook.SaveAs(saveDialog.FileName);
                    Console.WriteLine("导出成功!");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("导出失败:" + ex.Message);
            }
            finally
            {
                // 释放资源
                workbook.Close();
                excelApp.Quit();
                workbook = null;
                excelApp = null;
            }
        }
    }
}
 

你可能感兴趣的:(excel)