Domino 9 und frühere Versionen > Entwicklung

Excel.Application und Workbooks.Open

(1/2) > >>

TMC:
Ich muss Daten aus Excel in Notes importieren.

User wählt über NotesUIWorkspace.OpenFileDialog ein File aus und dann wird Zeile für Zeile ein neues Notes-Dokument angelegt und Werte übernommen.

Den OpenFileDialog kann man ja anpassen, so dass nur *.xls - Dateien angezeigt werden.
Wird allerdings eine gefakte Excel-Datei ausgewählt (z.B. ein umbenanntes GIF-Bild), so werden diese "Daten" trotzdem importiert, es kommt dann natürlich nur Müll an, also unlesbarer Text.

Wie kann ich abfragen, ob die gewählte Excel-Datei (über vXLObject.Workbooks.Open strFilename) wirklich eine Excel-Datei ist?

Habe in Excel jetzt leider keine Möglichkeit gefunden....

Ein Fehler wird nicht produziert, Ein LotusScript - Errorhandler (on Error goto errHandler) schlägt nicht zu.

Semeaphoros:
Kannst Du eigentlich nur versuchen, ob Du gültige Informationen auslesen kannst wie Spreadsheet-Name u.ä. oder ob da Müll daherkommt

TMC:
Hmm, eigentlich nicht sehr schön, weil ich (bzw. der User) dann etwas eingeschränkt wäre.

Wenn man in Excel 2000 eine gif-Datei öffnet, kommt zumindest eine "Textkonvertierungs-Agent"-Box; wenn man aber eine Excel-Datei in .gif umbenennt, kommt diese Box nicht.

Excel stellt also intern fest, ob es eine Excel-Datei ist.
Eine Property hab ich da leider nicht gefunden. Hoffe dass es da was gibt....

Semeaphoros:
Also, die MS-Files tragen alle in den ersten paar Bytes eine Signatur, aufgrund dieser Signatur identifiziert MS die eigenen Dateien, deshalb das beobachtete Verhalten. Leider wird diese Ueberprüfung von fast keinem anderen Programm durchgeführt, wenn auf MS-Dateien zugegriffen wird. Du kannst das natürlich hacken, indem Du die Datei binär öffnest und die ersten paar Bytes einliesest. Entweder Du schaust Dir die Struktur an, oder Du suchst bei MS (wahrscheinlich auf dem TechNet) nach der Dokumentation dieser Signaturen, bin aber nicht sicher, ob MS das wirklich veröffentlicht hat.

TMC:
Danke für die Info Jens.

Ich könnte ja auch Excel-Methoden nutzen (also nicht LS), nur leider ist mir keine Property bekannt, wie ich das auslesen könnte bei


--- Code: --- Set vXLObject = CreateObject( "Excel.Application" )
vXLObject.Workbooks.Open strFilename
Set vXLWorkbook = vXLObject.ActiveWorkbook
Set vXLSheet = vXLWorkbook.ActiveSheet
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln