我曾嘗試下面的代碼,讀取密碼保護的Excel文件使用Java
import org.apache.poi.poifs.crypt.Decryptor;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("D://protectedfile.xlsx"));
EncryptionInfo info = new EncryptionInfo(fs);
Decryptor d = new Decryptor(info); //Error
d.verifyPassword(Decryptor.DEFAULT_PASSWORD);
它拋出一個錯誤編譯錯誤:Cannot instantiate the type Decryptor
但最終這種方法會需要我來複制和創建一個可以讀取數據的新工作簿。
- 爲什麼我無法實例化Decryptor?
- 有沒有其他辦法比這個,所以我可以簡單地讀取密碼保護excel文件,而不創建它的副本?
注:我已經看過這個帖子reading excel file,但並不能幫助我的確切情況
你是否確信你所有的[需要POI罐子]的( http://poi.apache.org/overview.html#components)在你的類路徑上? – Gagravarr 2014-09-23 12:55:57
是的,我有所有需要閱讀excel的罐子,在這裏我不能只讀密碼保護的罐子。並且我還導入了'import org.apache.poi.poifs.crypt.Decryptor;'它確保jar中存在,否則我會得到編譯錯誤 – 2014-09-24 06:10:23
您確定您使用的是最新版本的Apache POI嗎?你在編譯時在運行時有相同的jar嗎? – Gagravarr 2014-09-24 09:03:32