C# 如何使用c将datagridview附加到excel文件

C# 如何使用c将datagridview附加到excel文件,c#,datagridview,export-to-excel,excel-interop,C#,Datagridview,Export To Excel,Excel Interop,我正在尝试将我的datagridview内容导出到application.startuppath中的excel文件。我面临的问题是,每当我将网格内容导出到excel时,它都会覆盖以前的内容。我想做的是附加到我的excel文件,而不是覆盖我现有的内容 这是我的密码: Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Of

我正在尝试将我的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作为行偏移量:

对于int i=0;i
希望这会有所帮助。您好,

您的代码可能重复,这对我很有帮助。谢谢但有一个小问题。每次我将数据追加到文件中时,它都会在上一行和新行之间留下一行空白。你知道如何解决这个问题吗?我很高兴代码对你有帮助,如果你能标记出问题的答案,我将不胜感激。请接受答案,如果您有更多问题,请将其放在单独的帖子中。感谢和问候,