vivia0717 2023-05-11 10:12 采纳率: 50%
浏览 42

datagradview实现导出选中行的数据

datagradview里面增加了选择功能,如何实现导出选中行的数据

  • 写回答

3条回答 默认 最新

  • Leodong. 2023-05-11 10:16
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    您可以通过以下步骤来实现在 C# 中将 DataGridView 中选中的行导出为数据:

    1. 创建一个按钮或菜单项,并为其添加点击事件处理程序。

    2. 在事件处理程序中,获取选中的行的数据,并将其保存到一个 DataTable 对象中。

      private void exportSelectedRows_Click(object sender, EventArgs e)
      {
          // 创建一个 DataTable 对象
          DataTable dt = new DataTable();
      
          // 添加列到 DataTable 中
          foreach (DataGridViewColumn column in dataGridView1.Columns)
          {
              if (column.Visible)
              {
                  dt.Columns.Add(column.HeaderText, column.ValueType);
              }
          }
      
          // 添加选中行的数据到 DataTable 中
          foreach (DataGridViewRow row in dataGridView1.SelectedRows)
          {
              DataRow dr = dt.NewRow();
              foreach (DataGridViewCell cell in row.Cells)
              {
                  if (cell.OwningColumn.Visible)
                  {
                      dr[cell.OwningColumn.HeaderText] = cell.Value;
                  }
              }
              dt.Rows.Add(dr);
          }
      
          // 导出数据到 Excel 文件中
          exportToExcel(dt);
      }
      
    3. 在导出数据的方法中,将 DataTable 对象中的数据导出到 Excel 文件中。您可以使用 Microsoft.Office.Interop.Excel 库来完成此操作,如下所示:

      private void exportToExcel(DataTable dt)
      {
          // 创建 Excel 应用程序对象
          Excel.Application excelApp = new Excel.Application();
          excelApp.Visible = false;
      
          // 创建一个新的工作簿
          Excel.Workbook workbook = excelApp.Workbooks.Add();
          Excel.Worksheet worksheet = workbook.Worksheets[1];
      
          // 将 DataTable 中的数据写入工作表中
          int row = 1;
          int col = 1;
          foreach (DataColumn column in dt.Columns)
          {
              worksheet.Cells[row, col] = column.ColumnName;
              col++;
          }
      
          row = 2;
          foreach (DataRow dr in dt.Rows)
          {
              col = 1;
              foreach (DataColumn column in dt.Columns)
              {
                  worksheet.Cells[row, col] = dr[column];
                  col++;
              }
              row++;
          }
      
          // 保存工作簿并关闭 Excel 应用程序
          workbook.SaveAs("export.xlsx");
          workbook.Close();
          excelApp.Quit();
      
          MessageBox.Show("导出成功!");
      }
      

    在上述代码中,我们首先创建了一个 DataTable 对象,并添加了选中行的数据。然后,我们使用 Microsoft.Office.Interop.Excel 库来将 DataTable 中的数据导出到 Excel 文件中。最后,我们在导出数据的方法中添加了一个消息框,以提示用户导出成功。

    需要注意的是,如果您的机器上没有安装 Microsoft Office,您可能需要手动添加对 Microsoft.Office.Interop.Excel 的引用。可以在 Visual Studio 中右键单击项目,选择“添加”->“引用”,然后在“COM”选项卡中找到 Microsoft Excel 应用程序并添加引用。

    希望这可以帮助您实现在 C# 中将 DataGridView 中选中的行导出为数据。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月11日

悬赏问题

  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题