前提: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
,即可解决该问题。
原文链接