Benutzer mit den meisten Antworten
Excel-Workbook kann mit .Net-4.0 nicht geöffnet werden

Frage
-
Hallo zusammen,
ich verwende C# um auf ein Excel-Workbook zuzugreifen.
Aus Problemen die sich biem umstieg auf .net-4.0 ergeben haben, habe ich beschlossen eine kleine TestApp zu entwickeln. Der folgende Code funktioniert unter .net-3.5 einwandfrei - unter 4.0 jedoch nicht.
using System; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace WindowsFormsApplication1 { public partial class Form1 : Form { private Excel.Workbook test; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenWithInterop(); } private void OpenWithInterop() { Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(excel_WorkbookOpen); test = excel.Workbooks.Open(@"C:/Test/test.xlsx"); excel.Quit(); } void excel_WorkbookOpen(Excel.Workbook Wb) { if (test.Name.Equals(Wb.Name)) // null-exception in .net-4 aber nicht in .net-3.5 { Console.WriteLine("done it right"); } } } }
Woran kann das liegen? Unter 3.5 erhalte ich beim Öffnen ein Objekt vom Typ "Microsoft.Office.Interop.Excel.WorkbookClass" unter 4.0 erhalte ich ein "System.__ComObject" das zum Beispiel beim Property "Author" als Wert die Ausnahme "{System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))" zeigt...
Was mache ich hier falsch? Was muss man beim Umstieg auf .net4 beachten, wenn auf Excel zugegriffen werden soll/muss?
PS: Beinahe vergessen -> Ich benutze Windows 7 Enterprise (x64) und Office 2010 (x86)
UPDATE: Ich habe den Fehler mittlerweilen etwas eingegrenzt. Alles klappt einigermassen wunderbar, ausser man benutzt den oben genannten Event. Dort tritt beim aktuellen .net-Framework die null-exception auf. Wie kann man etwaige Prüfungen in ohne dieses Event durchführen, bzw. was wäre der richtige Weg mit .net-4?
- Bearbeitet ch1ffr3 Freitag, 4. Mai 2012 12:49
- Verschoben Robert BreitenhoferModerator Freitag, 8. Juni 2012 09:23 VSTO (aus:Visual C#)
Antworten
-
Hallo ch1ffr3,
Diskussion in Zusammenhang: Opening Excel-Workbook works with .Net3.5 but not with .Net4
Folgender Code funktioniert einwandfrei in Visual Studio 2008 (Target Framework: .NET Framework 3.5) und in Visual Studio 2010 (Target Framework: .NET Framework 4)
using System; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelInterop { public partial class Form1 : Form { private Excel.Workbook test; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenWithInterop(); } private void OpenWithInterop() { Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(excel_WorkbookOpen); test = excel.Workbooks.Open(@"C:/Test/TestFilter.xlsx"); excel.Quit(); } void excel_WorkbookOpen(Excel.Workbook Wb) { String wbBookName = "TestFilter.xlsx"; if (Wb.Name==wbBookName) { Console.WriteLine("You open the wanted workbook"); } //MessageBox.Show(String.Format("{0} was opened.",Wb.Name)); } } }
Noch zum lesen:
Excel Add-in issue opening workbook
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.- Als Antwort markiert Robert BreitenhoferModerator Montag, 25. Juni 2012 12:25
Alle Antworten
-
Hallo ch1ffr3,
Diskussion in Zusammenhang: Opening Excel-Workbook works with .Net3.5 but not with .Net4
Folgender Code funktioniert einwandfrei in Visual Studio 2008 (Target Framework: .NET Framework 3.5) und in Visual Studio 2010 (Target Framework: .NET Framework 4)
using System; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelInterop { public partial class Form1 : Form { private Excel.Workbook test; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { OpenWithInterop(); } private void OpenWithInterop() { Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.WorkbookOpen += new Excel.AppEvents_WorkbookOpenEventHandler(excel_WorkbookOpen); test = excel.Workbooks.Open(@"C:/Test/TestFilter.xlsx"); excel.Quit(); } void excel_WorkbookOpen(Excel.Workbook Wb) { String wbBookName = "TestFilter.xlsx"; if (Wb.Name==wbBookName) { Console.WriteLine("You open the wanted workbook"); } //MessageBox.Show(String.Format("{0} was opened.",Wb.Name)); } } }
Noch zum lesen:
Excel Add-in issue opening workbook
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.- Als Antwort markiert Robert BreitenhoferModerator Montag, 25. Juni 2012 12:25
-
Hallo ch1ffr3,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.