2014-08-28 3 views
0

им экспорт 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

Эти способы, по которым вы устанавливаете для циклов, приводят к циклизации только в двух колонках (i=2 ;i<=3), и вы также пропустите финальную строку. Также в вашем коде отсутствует закрывающая скобка.

Try:

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 –

0

Я думаю apomene почти правильно.

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

Как по какой-то причине первенствует не с нуля. Единственная разница - +1 после j.

+0

да, но код он предоставил не работает .. –

+0

после того, как я использовал ваш код, я получил все данные вправо, но все столбцы заголовка ушли, почему im сталкивается с этим: / –

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; 
} 
} 
}