2011-03-05 42 views
2

我有DataGridView並且當我顯示導出到Excel工作表按鈕下面的錯誤出現:數據導出到Excel表單窗口形式

(Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))) 

here 
(
xlWorkBook = xlApp.Workbooks.Add(misValue); 
) 

和這個參考,我使用 (微軟的Excel 12.0)

private void button1_Click(object sender, EventArgs e) 
    { 
     Microsoft.Office.Interop.Excel.Application xlApp ; 
     Microsoft.Office.Interop.Excel.Workbook xlWorkBook ; 
     Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet ; 
     object misValue = System.Reflection.Missing.Value; 

     xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); 
     xlWorkBook = xlApp.Workbooks.Add(misValue); 
     xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 
     int i = 0; 
     int j = 0; 

     for (i = 0; i <= DGData.RowCount - 1; i++) 
     { 
      for (j = 0; j <= DGData.ColumnCount - 1; j++) 
      { 
       DataGridViewCell cell = DGData[j, i]; 
       xlWorkSheet.Cells[i + 1, j + 1] = cell.Value; 
      } 
     } 

     xlWorkBook.SaveAs("csharp.net-informations.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.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 , you can find the file c:\\csharp.net-informations.xls"); 
    } 

回答

1

錯誤可能是因爲用戶本地設置與辦公室版本不同,下面的解決方案可能適用於您,請嘗試並讓我們知道發生了什麼:

之前創建Excel對象

System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture; 
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 

關閉Excel中後:

System.Threading.Thread.CurrentThread.CurrentCulture = oldCI; 
0
xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); 

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

例外出現在這些線路