2017-09-13 6 views
0

ヘッダーをエクスポートしてもOKですが、行はエクスポートされません。現時点では、2列あり、2行しかエクスポートしようとしていません。DataGridをエクスポートしてヘッダーをExcelに出力しますが、行はありません

私は私のループに何か間違っていると思うが、私はそれを見ていない。

新しい目を探しています。あなたが列に別々のループを持ちたい

private void btnExport_Click(object sender, EventArgs e) 
    { 
     // Creating a Excel object. 
     Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application(); 
     Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing); 
     Microsoft.Office.Interop.Excel._Worksheet worksheet = null; 

     try 
     { 
      worksheet = workbook.ActiveSheet; 
      worksheet.Name = "ExportedFromDatGrid"; 

      int cellRowIndex = 1; 
      int cellColumnIndex = 1; 

      //Loop through each row and read value from each column. 
      for (int i = 0; i < DGV.Rows.Count; i++) 
      { 
       for (int j = 0; j < DGV.Columns.Count; j++) 
       { 
        if (cellRowIndex == 1) 
        { 
         worksheet.Cells[cellRowIndex, cellColumnIndex] = DGV.Columns[j].HeaderText; 
        } 
        else 
        { 
         worksheet.Cells[cellRowIndex, cellColumnIndex] = DGV.Rows[i].Cells[j].Value.ToString(); 
        } 
        cellColumnIndex++; 
       } 
       cellColumnIndex = 1; 
       cellRowIndex++; 
      } 

      SaveFileDialog saveDialog = new SaveFileDialog(); 
      saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*"; 
      saveDialog.FilterIndex = 2; 

      if (saveDialog.ShowDialog() == DialogResult.OK) 
      { 
       workbook.SaveAs(saveDialog.FileName); 
       MessageBox.Show("Export Successful"); 
      } 
     } 
     catch (System.Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      excel.Quit(); 
      workbook = null; 
      excel = null; 
     } 
    } 
+0

[OK]を、最新の編集は今ヘッダーをつかみ、データグリッドの最後の行は、しかし、データグリッドの最初の行はスキップされます。 – Logan

+0

これで1の代わりに 'if(cellRowIndex == 0)'を設定してももちろん私にヘッダーは与えられませんが、DataGridにデータが格納されている2行が表示されます。しかし、何らかの理由でヘッダーを取得した場合、データグリッドの最後の行しか取得できません。 – Logan

+0

他の提案はありますか? – Logan

答えて

0

 for (int j = 0; j < DGV.Columns.Count; j++) 
     { 

      worksheet.Cells[cellRowIndex, cellColumnIndex] = DGV.Columns[j].HeaderText; 
      cellColumnIndex++; 
     } 
     cellRowIndex++; 

     //Loop through each row and read value from each column. 
     for (int i = 0; i < DGV.Rows.Count; i++) 
     { 
      for (int j = 0; j < DGV.Columns.Count; j++) 
      { 
       worksheet.Cells[cellRowIndex, cellColumnIndex] = DGV.Rows[i].Cells[j].Value.ToString(); 
       cellColumnIndex++; 
      } 
      cellColumnIndex = 1; 
      cellRowIndex++; 
     } 
関連する問題