我的数据网格视图中有 10k 行和 15 列。我想将此数据导出到 Excel 表或单击按钮。我已经尝试过使用下面的代码。
private void btExport_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
app.Visible = true;
worksheet = workbook.Sheets["Sheet1"];
worksheet = workbook.ActiveSheet;
for(int i=1;i<dataGridView1.Columns.Count+1;i++)
{
worksheet.Cells[1, i] = dataGridView1.Columns[i-1].HeaderText;
}
for (int i=0; i < dataGridView1.Rows.Count-1 ; i++)
{
for(int j=0;j<dataGridView1.Columns.Count;j++)
{
if (dataGridView1.Rows[i].Cells[j].Value != null)
{
worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
else
{
worksheet.Cells[i + 2, j + 1] = "";
}
}
}
}
这对我有用,但完成导出过程需要花费大量时间。
是否可以在单击按钮时立即从 dataGridView(10k 行)导出到 excel?
除此之外,当我尝试将所有 dataGridview 内容复制到剪贴板然后手动将其粘贴到 Excel 工作表时,它几乎立即发生。
那么有没有办法将所有 dataGridView 单元格复制到剪贴板并在单击按钮时将其粘贴到 excel 表(带有单元格格式)?
我有如下复制到剪贴板的代码,但我不知道如何通过打开将其粘贴到新的 Excel 工作表中。
private void copyAllToolStripMenuItem_Click(object sender, EventArgs e)
{
dataGridView1.SelectAll();
DataObject dataObj = dataGridView1.GetClipboardContent();
if (dataObj != null)
Clipboard.SetDataObject(dataObj);
}
请帮忙举个例子。我是 C# 新手。