C#中实现DataGridView数据的优雅Excel之旅(EPPlus)

发布于:2024-05-09 ⋅ 阅读:(22) ⋅ 点赞:(0)

DataGridView效果图:

EXCEL效果图:

代码如下:

首先要引入EPPlus包 可以使用命令行来安装 Install-Package EPPlus  也可以使用NUGet搜索EPPlus来安装

  public Homes()
  {
      InitializeComponent();

      ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial; // 设置EPPlus为非商业使用
  }
 #region 导出Excel
 private void button2_Click(object sender, EventArgs e)
 {
     // 创建一个SaveFileDialog实例
     SaveFileDialog saveFileDialog = new SaveFileDialog();
     saveFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx";
     saveFileDialog.FileName = $"{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.xlsx"; // 设置默认文件名为当前日期时间

     // 如果用户点击了“保存”按钮,则保存文件
     if (saveFileDialog.ShowDialog() == DialogResult.OK)
     {
         string filePath = saveFileDialog.FileName;
         FileInfo excelFile = new FileInfo(filePath);

         // 创建一个ExcelPackage对象
         using (ExcelPackage excelPackage = new ExcelPackage())
         {
             // 添加一个工作表
             ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("员工表");

             // 将DataGridView的列标题写入Excel第一行
             for (int i = 0; i < dataGridView1.Columns.Count; i++)
             {
                 worksheet.Cells[1, i + 1].Value = dataGridView1.Columns[i].HeaderText;
             }

             // 将DataGridView的内容写入Excel
             for (int row = 0; row < dataGridView1.Rows.Count - 1; row++) // 不包括合计行
             {
                 for (int col = 0; col < dataGridView1.Columns.Count; col++)
                 {
                     worksheet.Cells[row + 2, col + 1].Value = dataGridView1.Rows[row].Cells[col].Value;
                 }
             }

             // 保存Excel文件
             excelPackage.SaveAs(excelFile);

            // MessageBox.Show("文件保存成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
     }
     NMessage("导出数据成功", NotificationType.Info);
 }
 #endregion


网站公告

今日签到

点亮在社区的每一天
去签到