如何使用c#在excel文件中添加datagridview
本文关键字:添加 datagridview 文件 excel 何使用 | 更新日期: 2023-09-27 18:18:48
我试图将我的datagridview内容导出到application.startuppath
中存在的excel文件。我面临的问题是,每当我导出我的网格内容excel,它覆盖了以前的内容。我想做的是追加到我的excel文件,而不是覆盖我现有的内容。
Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Open(Application.StartupPath+"excelfile.xls");
Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
app.Visible = false;
worksheet = workbook.Sheets["Sheet1"];
worksheet = workbook.ActiveSheet;
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] = "";
}
}
workbook.Close(SaveChanges: true);
app.Quit();
编辑:更新代码:感谢@Alex Bell
int _offset = worksheet.UsedRange.Rows.Count;
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 1; j < dataGridView1.Columns.Count; j++)
{
if (dataGridView1.Rows[i].Cells[j].Value != null)
worksheet.Cells[i + 2 + _offset, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
else
worksheet.Cells[i + 2 + _offset, j + 1] = "";
}
}
解决了我的附加数据的问题,但另一个小问题是,每次我更新它的旧行和新行之间留下空白行。
根据您的情况,您可以使用int _offset = worksheet.UsedRange.Rows.Count
作为循环中的行偏移量:
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 + _offset, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
else
worksheet.Cells[i + 2 + _offset, j + 1] = "";
}
}
希望这将帮助。问候,