none
Excel-Workbook kann mit .Net-4.0 nicht geöffnet werden RRS feed

  • 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?

    Freitag, 4. Mai 2012 08:17

Antworten

Alle Antworten