C#将100万条数据导出到EXCEL
时间: 2023-08-07 17:03:19 浏览: 128
在将100万条数据导出到Excel文件时,最好采用分批次写入的方式,以避免内存溢出或性能问题。下面是一个示例代码,可以将数据分为多批次写入Excel文件:
```csharp
using Excel = Microsoft.Office.Interop.Excel;
// 每批次写入的数据量
int batchSize = 100000;
// 创建Excel对象
Excel.Application excel = new Excel.Application();
excel.Visible = false;
Excel.Workbook workbook = excel.Workbooks.Add(System.Reflection.Missing.Value);
Excel.Worksheet sheet = (Excel.Worksheet)workbook.ActiveSheet;
// 写入表头
for (int col = 1; col <= data.Columns.Count; col++)
{
sheet.Cells[1, col] = data.Columns[col - 1].ColumnName;
}
// 分批次写入数据
int rowCount = 1;
for (int batch = 0; batch < Math.Ceiling((double)data.Rows.Count / batchSize); batch++)
{
int startRow = batch * batchSize + 1;
int endRow = Math.Min(startRow + batchSize - 1, data.Rows.Count);
for (int row = startRow; row <= endRow; row++)
{
rowCount++;
for (int col = 1; col <= data.Columns.Count; col++)
{
sheet.Cells[rowCount, col] = data.Rows[row - 1][col - 1].ToString();
}
}
}
// 自适应列宽
sheet.Columns.AutoFit();
// 保存Excel文件
workbook.SaveAs("data.xlsx", Excel.XlFileFormat.xlOpenXMLWorkbook, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange,
Excel.XlSaveConflictResolution.xlUserResolution, true, System.Reflection.Missing.Value,
System.Reflection.Missing.Value, System.Reflection.Missing.Value);
workbook.Close();
excel.Quit();
```
在上述代码中,我们将数据分为多批次,每批次写入`batchSize`条数据,然后保存Excel文件。同时,我们也自适应了Excel文件中的列宽,以便更好地呈现数据。
阅读全文