2014-08-28 139 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; 
} 
} 
}