Wie um zu überprüfen, ob eine Datei ein gültiges excel-Tabelle?
Habe ich schon einige suchen hier ALSO an, auf diese, diese, diese und mehr, aber keine Ahnung, also werde ich Sie bitten, Jungs.
Ich versuche zum öffnen einer Excel-Datei über die Interop-und ich habe Office 2007 installiert, so dass ich mit Microsoft.Office.Interop.Excel
version 14.0
.
Wenn ich versuche, öffnen Sie eine gültige xls
Datei, läuft alles einwandfrei.
Aber wenn ich versuche, öffnen Sie eine ungültige Datei (wie z.B. eine bitmap-oder eine ausführbare Datei) per Interop Excel öffnet es ohne zu beschweren oder Warnung.
Woran kann ich erkennen, Excel hat eine ungültige Datei geladen, ohne zu blockieren mit einer Warnung ?
Ich versuche zu schreiben, ein unit-test meiner Excel-Objekt reader. Einer der Fälle ist, zu versuchen, öffnen Sie eine ungültige Datei.
Etwas code helfen:
Anwendung-Erstellung:
_app = new Application()
{
Visible = false,
DisplayAlerts = false, //<-- I don't want to remove this.
AskToUpdateLinks = false,
};
Arbeitsmappe öffnen von:
_workbooks.Open(filename);
_workbook = _workbooks.get_Item(1); //1-based.
_worksheets = _workbook.Sheets;
BEARBEITEN:
Nur um 1 mehr Informationen: Excel lädt die Datei ungültig. Wenn DisplayAlerts
auf true gesetzt ist, beschwert es sich (öffnen-dialog) Information der Arbeitsmappe scheint beschädigt zu sein, aber wenn DisplayAlerts
auf false gesetzt ist, lädt es die Datei einfach als unten:
- auch ein Weg, um Prüfung auf gültige Datei ext .csv-oder xls zu sein scheint, die einfachste Methode...
- Sie könnte sehen, ob die _app.Ready-Eigenschaft geht auf false, wenn das laden einer Datei ungültig. Nur ein Gedanke, den ich habe es nicht ausprobiert.
- KRAZE, ich habe bereits die Erweiterung überprüfen Sie vor dem laden der Datei. Aber was ist, wenn jemand ändert die Endung der Datei, und versuchen Sie zu laden .exe statt ?
- gerade überprüft: _app.Bereit bleibt
true
vor und nach dem laden der Datei ungültig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gerade zu Ende gegangen, mit einem anderen Ansatz: Excel-Arbeitsmappen haben eine Eigenschaft namens
FileFormat
. Wenn Excel eine Datei ungültig, es legt die Datei-format zu einem der enumerator-Werte text:- Und in dieser Aufzählung Excel hat die gültig Dateien (gültig für meine Zwecke):
So beendete ich mit einem einfachen "
or
" zu filtern, die Art der Datei, die ich importieren möchten:Und jetzt funktioniert es. Danke für Eure Hilfe Jungs, dass du mich in die richtige Richtung.
Können Sie die Arbeitsmappe zählen vor und nach dem laden der Datei. Wenn beide zählt sind die gleichen, die Datei nicht geladen werden konnte.