Hallo, ich bin neu hier und hoffe auf Hilfe
ich möchte aus einer Excel-Datei einige Zeilen löschen. Dafür nutze ich COM und Excel muss auf dem Zielrechner installiert sein.
Wenn Excel nicht installiert ist, will ich eine Exception bekommen und stattdessen ADODB nutzen. Leider kann ADODB keine Zeilen/ Datensätze löschen, so dass ich hier nur die Zellen leere.
Aber hier soll es um die COM-Lösung gehen.
Das Problem ist, dass ich eine Exception-Dialogbox bekomme, wenn Excel nicht installiert ist, obwohl ich
1. das ganze mit try/catch abfange:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| try { Microsoft.Office.Interop.Excel.Application ExcelObj = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook workbook = ExcelObj.Workbooks.Open(filename, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, null, null); } catch (Exception ex) { Debug.WriteLine("COM Exception: " + ex.Message); Debug.WriteLine("COM does not seem to work."); Debug.Flush(); result = false; } |
und
2. einen globalen Exception-Handler habe:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| static void Main(String[] args) { AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException); }
private static void OnUnhandledException(Object sender, UnhandledExceptionEventArgs e) { Exception ex = e.ExceptionObject as Exception; if (ex != null) { } } |
Keine der beiden Handler "catcht" diese Exception, so dass der User eine Exception-Meldung gekommt:
Zitat: |
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. Das System kann die angegebene Datei nicht finden.
File name: 'Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' |
Ich habe absichtlich nicht
using Microsoft.Office.Interop.Excel; benutzt, sondern immer im try-Block das "Microsoft.Office.Interop.Excel" davor geschrieben, das hilft aber nix.
Irgendeine Idee, wie ich einfach überprüfen kann, ob Excel installiert ist und welche Variante (COM/ADODB) ich nutzen kann?
Vielen Dank,
Oliver