2013-02-20 28 views
5

Używam programu EPPlus w języku C# do odczytu pliku Excel (.xlsx). Inicjacja odbywa się to tak:Sprawdzanie, czy plik faktycznie jest plikiem Excela przy użyciu EPPlus

var package = new ExcelPackage(new FileInfo(filename)); 

Działa to dobrze, ale czy jest jakiś sposób, aby sprawdzić, jeśli określony filename lub package jest rzeczywiście ważny plik .xlsx? W przeciwnym razie wystąpią wyjątki podczas działania na obiekcie innym niż Excel, np. jeśli użytkownik przypadkowo otworzy plik .zip lub w inny sposób.

Odpowiedz

3

Można sprawdzić rozszerzenie pliku:

string file = @"C:\Users\Robert\Documents\Test.txt"; 

string extenstion = Path.GetExtension(file); 

Aktualizacja

I miałaś znaleźć jakieś wartości zwracanych do sytuacji, w której jakiś plik nie może zostać otwarty w dokumentacji EPPlus, ale można to wykorzystać, aby złapać excetptions:

FileInfo fileInfo = new FileInfo(pathToYourFile); 

ExcelPackage package = null; 
try 
{ 
    package = new ExcelPackage(fileInfo); 
} 
catch(Exception exception) 
{ 
    ... 
} 

Jeśli nie jesteś w catch - ów oznacza, że ​​był o trafił poprawnie.

+1

Tak, ale to nie wykrywa, czy plik jest Excelem w sposób binarny, prawda? –

+1

@Robert - nie możesz go przetestować na swoim komputerze? – MikroDel

+0

@Robert - czy myślisz, że pliki binarne nie mają żadnego rozszerzenia?) – MikroDel

Powiązane problemy