我的数据网格视图中有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] = "";
}
}
}
}
这对我来说可行,但是导出过程需要很长时间才能完成。
是否有可能在单击按钮时即时从包含10k行的dataGridView中导出到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#的新手。