# Passwort geschützte Excel Datei öffnen (POI)



## Stefan2902 (27. Jul 2009)

Hallo,

ich versuche eine passwortgeschützte Exceldatei zu öffnen. Die Exceldatei verfügt sowohl über einen Worksheet- als auch über einen Workbookschutz.

Sobald ich die Datei manuell öffne, den Passwortschutz für das Worksheet aufhebe, kann ich Daten von A nach B kopieren.

Dasselbe würde ich nun gern in Java machen. Beim Versuch eine Passwortgeschütze Exceldatei zu öffnen erhalte ich die folgende Fehlermeldung


```
Exception in thread "main" org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance
	at org.apache.poi.hssf.record.RecordFactory$ReflectionRecordCreator.create(RecordFactory.java:71)
	at org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:269)
	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:408)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:277)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:202)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:318)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:299)
	at com.eet.lexifi.ReadNominations.readNominations(ReadNominations.java:43)
	at com.eet.lexifi.ReadNominations.main(ReadNominations.java:133)
Caused by: org.apache.poi.hssf.record.RecordFormatException: HSSF does not currently support encrypted workbooks
	at org.apache.poi.hssf.record.FilePassRecord.<init>(FilePassRecord.java:49)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.apache.poi.hssf.record.RecordFactory$ReflectionRecordCreator.create(RecordFactory.java:63)
	... 8 more
```


Der Javacode sieht wie folgt aus:


```
public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		InputStream input = new FileInputStream("H:/LexiFi/test.xls");
		HSSFWorkbook wb = new HSSFWorkbook(input);
		HSSFSheet sheet = wb.getSheet("EON VPP Nomination");
		FileWriter writer = new FileWriter("H:\\LexiFi\\nominations.csv");

	}
```

Ist es generell nicht möglich Passwortgeschützte Exceldateien mit POI zu öffnen (siehe Fehlermeldung?

Gruß
Stefan


----------



## SlaterB (27. Jul 2009)

HSSF does not currently support encrypted workboo - Google-Suche
->
Frequently Asked Questions
->


> 7. Does HSSF support protected spreadsheets?
> 
> Protecting a spreadsheet encrypts it. We wont touch encryption because we're not legally educated and don't understand the full implications of trying to implement this. If you wish to have a go at this feel free to add it as a plugin module. We wont be hosting it here however.


----------



## Stefan2902 (27. Jul 2009)

Hallo,

vielen Dank. Ich werde nun auf JExcel API 2_6_10 umstellen. Wie ich gelesen habe, sollte es hiermit möglich sein, passwortgeschützte Dateien zu lesen.

Stefan


----------



## Stefan2902 (27. Jul 2009)

Hier die Lösung:

JExcel API 2_6_10 reicht leider auch nicht, da auch hier kein PW-Schutz unterstützt wird. Der JAR File von Word Excel PowerPoint PDF BarCode Components for .NET Java SSRS reicht jedoch, um auf Worksheet und Workbook geschützte Dateien zugreifen zu können. Hier noch ein Codebeispiel:


```
// Open Workbook
		Workbook wBook = new Workbook();
		wBook.open(filename, FileFormatType.DEFAULT);

		// Open Worksheet and unprotect it
		Worksheet sheet = wBook.getWorksheets().getSheet(worksheet);
		sheet.unprotect(password);

		// Get Cells
		Cells cells = sheet.getCells();
```

Gruß
Stefan


----------



## ZeroQool (4. Aug 2009)

Ist aber auch wieder eine 30T Trial oder?


----------

