前提:NuGet
安装EPPlus
,选择合适的能兼容当前.net framwork
的版本
主要代码:
private void btn_export_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Excel Files|*.xlsx|All Files|*.*"; // 设置文件筛选器
saveFileDialog.Title = "选择保存位置"; // 设置对话框标题
saveFileDialog.FileName = "data.csv"; // 设置默认文件名
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = saveFileDialog.FileName;
// 在这里执行保存文件的操作,可以调用之前的导出到Excel的方法
ExportToExcel(Dgv, filePath);
}
}
private void ExportToExcel(DataGridView dataGridView, string filePath)
{
// 创建一个新的 Excel 包
using (ExcelPackage excelPackage = new ExcelPackage())
{
// 添加一个工作表
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
// 将 DataGridView 的列标题复制到工作表的第一行
for (int i = 0; i < dataGridView.Columns.Count; i++)
{
worksheet.Cells[1, i + 1].Value = dataGridView.Columns[i].HeaderText;
}
// 将 DataGridView 的数据复制到工作表中
for (int i = 0; i < dataGridView.Rows.Count; i++)
{
for (int j = 0; j < dataGridView.Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1].Value = dataGridView.Rows[i].Cells[j].Value;
}
}
// 保存 Excel 文件
FileInfo excelFile = new FileInfo(filePath);
excelPackage.SaveAs(excelFile);
}
}
报错信息
{"Please set the ExcelPackage.LicenseContext property. See https://epplussoftware.com/developers/licenseexception"}
使用的是 EPPlus 5.0.4
或更高版本,因此需要设置 ExcelPackage.LicenseContext
属性来避免许可证错误。(在 应用程序引用了正确的NuGet包,即 EPPlus 的前提下)即:在设置属性之前,先引入 System.ComponentModel
命名空间,然后在窗体的构造函数中设置 ExcelPackage.LicenseContext 属性为 LicenseContext.NonCommercial
,即可解决该问题。