2017-08-04 4 views
0

SQLクエリでdatagridviewのデータを取得しています。それから私はデータをExcelにエクスポートしています。 ボタンをクリックするとデータが完全にdatagridviewになり、最初のデータをエクスポートして保存することができます。新しいdatagridviewデータをエクスポートする方法

私は私が例えば

を保存しているデータに ことを行うことはできません秀でるために新しいデータをエクスポートします。 10行のデータを保存した後、20行のデータを保存する場合は、30行のデータをExcelに保存する必要がありますが、データは20行あります。

どうすれば修正できますか?

private void bttn_Excel_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["Sayfa1"]; 
      worksheet = workbook.ActiveSheet; 

      worksheet.Name = "Anlık Değerleri"; 


      // storing header part in Excel 
      for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) 
      { 
       worksheet.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText; 
      }  

      // storing Each row and column value to excel sheet 
      for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
      { 
       for (int j = 0; j < dataGridView1.Columns.Count; j++) 
       { 
        worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
       } 
      } 

      // save the application 
      workbook.SaveAs("C:\\Users\\senerk\\Desktop\\Kitap1.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 

      // Exit from the application 
      app.Quit(); 
} 
+0

カウントまたは最後の行の位置を維持し、前のボタンをクリックしたときに上書きされないように、0ではなくその番号でループを開始する必要があるようです。 – Crowcoder

+0

最後の行の位置に 'worksheet.UsedRange.Rows.Count'を使用してください –

+0

@AzarShaikhここで私は自分のコードでそれを使うべきですか? – TolgaKucuk

答えて

1

アザーシェイクは、あなたがworksheet.UsedRange.Rows.Countを使用する必要があります述べたように:

は、ここに私のコードは、Excelにエクスポートすることです。これにあなたの第二のループを変更 、それが動作するはずです:

for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) 
{ 
    for (int j = 0; j < dataGridView1.Columns.Count; j++) 
    { 
     worksheet.Cells[worksheet.UsedRange.Rows.Count + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); 
    } 
} 

私は作業環境でそれをテストしていないが、あなたはアイデアを得ました! 詳細情報here

関連する問題