2017-04-26 3 views
0

Ich versuche Datagrid in eine Excel-Datei aber ich erhalte diesen Fehler zu exportieren:Wie wird dieser Fehler von 'System.Runtime.InteropServices.COMException' behoben?

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in Test.exe 
Additional information: Ancien format ou bibliothèque de types non valide. 

Hier ist mein Code:

Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); //this generates the error 
     Workbook wb = Excel.Workbooks.Add(XlSheetType.xlWorksheet); 
     Worksheet ws = (Worksheet)Excel.ActiveSheet; 
     Excel.Visible = true; 
     ws.Cells[1, 1] = "Column1"; 
     ws.Cells[1, 2] = "Column2"; 
     ws.Cells[1, 3] = "Column3"; 
     ws.Cells[1, 4] = "Column4"; 
     ws.Cells[1, 5] = "Column5"; 
     for (int j=2; j <= dataGridView1.Rows.Count; j++) 
     { 
      for(int i= 2; i <= 5; i++) 
      { 
       ws.Cells[j, i] = dataGridView1.Rows[j-2].Cells[i-1].Value; 

      } 
     } 

Wie dies zu korrigieren?

--------------------------- BEARBEITEN ------------------ -----------------

ich schon versucht, diese Zugabe:

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

und es funktionierte, wie es scheint, das Problem zu einem Sprachkonflikt war fällig.

+1

Überprüfen Sie, welche Version des Interops Sie referenziert haben. Dann überprüfen Sie die Registrierung HKEY_CLASSES_ROOT -> TypeLib. Suchen Sie nach dem PrimaryInteropAssemblyName und stellen Sie sicher, dass Sie dieselbe Verison registriert haben. Wenn Sie 14.0 und 15.0 haben, könnte dies Ihr Problem sein. – Wheels73

+0

Das Programm verweist auf MicroSoft Office Interop Excel Version 12.0.0.0, wie finde ich diese Registrierung? Tut mir leid, ich bin neu in diesem Bereich. – User001122

+1

Hallo, genau das gleiche. Überprüfen Sie einfach die Registrierung. Sie können nach Microsoft.Office.Interop.Excel unter dem TypeLib-Schlüssel suchen, Verwenden (Strg F) für suchen – Wheels73

Antwort

0

Ich versuchte dies und fügte hinzu:

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

und es funktionierte, wie es scheint, das Problem zu einem Sprachkonflikt zurückzuführen war.

Verwandte Themen