2012-09-23 71 views
0

我把datagridview導出爲ex​​cel如何將DataGridView中的HeadColumn保存到Excel中?

但是headcolumn不顯示在excel文件中。

樣品

結果(在Excel)

1 | mani | 213/435 | 0-892-342234-09 
2 | ware | 1/67 | 053-36-49 

但我需要的結果(在Excel)

ID | Name | Address | Tel. >>> **Headcolumn** 
1 | mani | 213/435 | 0-892-342234-09 
2 | ware | 1/67 | 053-36-49 

代碼C#Windows窗體

 private void btExport_Click(object sender, EventArgs e) 
     { 
      string sql = @"SELECT id,fullname,address,tele FROM tablePeople"; 
      SqlCommand cmd = new SqlCommand(sql, Conn); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      da.Fill(ds, "data"); 
      DataTable dt = ds.Tables["data"]; 

      Excel.Application xlApp; 
      Excel.Workbook xlWorkBook; 
      Excel.Worksheet xlWorkSheet; 
      object misValue = System.Reflection.Missing.Value; 

      xlApp = new Excel.Application(); 
      xlWorkBook = xlApp.Workbooks.Add(misValue); 
      xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
      int r = 0; 
      int c = 0; 

      // DGV To EXCLE But HeadColumn don't show in excel 
      for (r = 0; r <= dataGridView1.RowCount - 1; r++) 
      { 
       for (c = 0; c <= dataGridView1.ColumnCount - 1; c++) 
       { 
        DataGridViewCell cell = dataGridView1[c, r]; 
        xlWorkSheet.Cells[r + 1, c + 1] = cell.Value; 
       } 
      } 

      xlWorkBook.SaveAs(@"c:\details.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); 
      xlWorkBook.Close(true, misValue, misValue); 
      xlApp.Quit(); 

      releaseObject(xlWorkSheet); 
      releaseObject(xlWorkBook); 
      releaseObject(xlApp); 

      MessageBox.Show("Excel file created"); 
     } 

非常感謝你爲你的時間:)

回答

0

有一列集合在兩個DataGridViewDataTable 您可以通過遍歷他們得到您的列名。

之前,你這樣做:

for (r = 0; r <= dataGridView1.RowCount - 1; r++) 
{ 
    for (c = 0; c <= dataGridView1.ColumnCount - 1; c++) 
    { 
     DataGridViewCell cell = dataGridView1[c, r]; 
     xlWorkSheet.Cells[r + 1, c + 1] = cell.Value; 
    } 
} 

添加以下代碼:

c = 0; 
foreach(DataGridViewColumn dataGridViewColumn in dataGridView1.Columns) 
{ 
    xlWorkSheet.Cells[0, c++] = dataGridViewColumn.Name; 
} 
+0

謝謝:) 我從你加入這樣的代碼。 但錯誤 COMException未處理 異常來自HRESULT:0x800A03EC T___T – nettoon493

+0

@ nettoon493:運行調試器!哪一行失敗? – Moon

相關問題