1.需要安装EPPlus插件
2.引入
using OfficeOpenXml;
using OfficeOpenXml.Style;
3.代码
public void ExportDataGridViewToExcel(DataGridView dgv, string filePath)
{
// 设置EPPlus的许可证上下文
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// 检查文件是否存在
if (!File.Exists(filePath))
{
// 文件不存在,创建一个新的Excel文件并写入信息
package = new ExcelPackage();
workbook = package.Workbook;
worksheet = workbook.Worksheets.Add("Sheet1");
// 写入表头
for (int i = 0; i < dgv.Columns.Count; i++)
{
worksheet.Cells[1, i + 1].Value = dgv.Columns[i].HeaderText;
worksheet.Cells[1, i + 1].Style.Font.Bold = true;//行标题加粗
}
// 写入行数据
for (int i = 0; i < dgv.Rows.Count; i++)
{
for (int j = 0; j < dgv.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1].Value = dgv.Rows[i].Cells[j].Value?.ToString();
}
}
FileInfo fileInfo = new FileInfo(filePath);
package.SaveAs(fileInfo);
}
else
{
// 文件存在,打开并写入或覆盖信息
package = new ExcelPackage(new FileInfo(filePath));
workbook = package.Workbook;
worksheet = workbook.Worksheets[0]; // 假设我们只操作第一个工作表
// 清除工作表内容
worksheet.Cells.Clear();
// 写入表头
for (int i = 0; i < dgv.Columns.Count; i++)
{
worksheet.Cells[1, i + 1].Value = dgv.Columns[i].HeaderText;
worksheet.Cells[1, i + 1].Style.Font.Bold = true;
}
// 写入行数据
for (int i = 0; i < dgv.Rows.Count; i++)
{
for (int j = 0; j < dgv.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1].Value = dgv.Rows[i].Cells[j].Value?.ToString();
}
}
package.Save(); // 保存更改
}
}