2014-08-28 184 views
0

IM使用此代碼輸出一個gridview表到Microsoft Excel:導出的GridView表到Excel

private void button5_Click(object sender, EventArgs e) 
    { 
     Microsoft.Office.Interop.Excel.Application Excel = new  Microsoft.Office.Interop.Excel.Application(); 
     Workbook wb = Excel.Workbooks.Add(XlSheetType.xlWorksheet); 
     Worksheet ws = (Worksheet)Excel.ActiveSheet; 
     Excel.Visible= true; 
     ws.Cells[1, 1] = "VehiclePlateNumber"; 
     ws.Cells[1, 2] = "VehicleDescription"; 
     ws.Cells[1, 3] = "Distance"; 

     for (int j = 2; j <= datagridview1.Rows.Count; j++) 
     { 

      for (int i = 2; i <= 3; i++) 

      { 
       ws.Cells[j, i] = datagridview1.Rows[j - 2].Cells[i - 1].Value; 
      } 

} 

其工作,但第一個欄只顯示沒有數據的標題文字,我不知道是什麼問題,並且我試圖對代碼做一些更改,但我無法達到解決方案,請提供任何幫助?

回答

0

他們通過這種方式將for循環結果設置爲僅在兩個colums(i=2 ;i<=3)中循環,而且您還錯過了最後一行。 同樣在你的代碼中,你錯過了一個右括號。

嘗試:

for (int j = 0; j < datagridview1.Rows.Count; j++) 
     { 
      for (int i = 0; i < 3; i++) 
      { 
       ws.Cells[j, i+1] = datagridview1.Rows[j].Cells[i].Value; 
      } 
     } 
+0

它,當我按下按鈕給我的錯誤,該錯誤表示: COM異常是未處理的 異常來自HARESULT 0X800A03EC – 2014-08-28 07:48:31

0

我覺得apomene差不多吧。

ws.Cells[j +1 , i+1] = datagridview1.Rows[j].Cells[i].Value;

至於一些原因Excel是不是從零開始的。唯一的區別是j之後的+1。

+0

是啊,但他提供的代碼沒有工作.. – 2014-08-28 18:27:29

+0

我使用你的代碼後,我得到了所有的數據,但所有的標題文本列不見了,爲什麼我面臨這個:/ – 2014-08-28 20:03:42

0

問題是使用此代碼後問題:

for (int j = 2; j <= datagridview1.Rows.Count; j++) 
{ 
for (int i = 1; i <= 3; i++) 
{ 
ws.Cells[j, i] = datagridview1.Rows[j - 2].Cells[i - 1].Value; 
} 
} 
}