关于如何使用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技术站