datagradview实现导出选中行的数据

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

该回答通过自己思路及引用到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 中选中的行导出为数据。


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

可以通过以下步骤实现在DatagridView中导出选中行的数据:

  1. 创建一个“导出”按钮,并为它添加一个单击事件处理程序。
  2. 在单击事件处理程序中,使用以下代码获取选中行的数据并将其存储到一个DataTable对象中:
// 创建一个DataTable对象
DataTable dt = new DataTable();

// 添加列
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
    dt.Columns.Add(column.Name, typeof(string));
}

// 添加行
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
    DataRow newRow = dt.Rows.Add();
    foreach (DataGridViewCell cell in row.Cells)
    {
        newRow[cell.ColumnIndex] = cell.Value;
    }
}
  1. 使用以下代码将DataTable对象导出为CSV文件:
// 创建一个保存文件对话框
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "CSV文件 (*.csv)|*.csv|所有文件 (*.*)|*.*";
if (sfd.ShowDialog() == DialogResult.OK)
{
    // 创建一个StreamWriter对象,将数据写入CSV文件中
    using (StreamWriter sw = new StreamWriter(sfd.FileName, false))
    {
        // 创建表头
        for (int i = 0; i < dt.Columns.Count; i++)
        {
            sw.Write(dt.Columns[i]);
            if (i < dt.Columns.Count - 1)
            {
                sw.Write(",");
            }
        }
        sw.Write(sw.NewLine);

        // 创建数据行
        foreach (DataRow row in dt.Rows)
        {
            for (int i = 0; i < dt.Columns.Count; i++)
            {
                if (!Convert.IsDBNull(row[i]))
                {
                    sw.Write(row[i].ToString());
                }
                if (i < dt.Columns.Count - 1)
                {
                    sw.Write(",");
                }
            }
            sw.Write(sw.NewLine);
        }
    }

    MessageBox.Show("导出数据成功!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

这样,选中行的数据就会被导出到一个CSV文件中。

datagradview.SelectedRows就是选中行