我有一个受密码保护的Excel电子表格.我需要打开此电子表格并从中读取数据.我一直试图使用POI API无济于事.Java解决方案将是首选,但任何想法都会有所帮助.
编辑:是的,我有密码.该文件在excel中受密码保护; 必须输入密码才能查看电子表格.
Edit2:我无法使用POI用密码打开它,我正在寻找替代解决方案.
POI应该能够打开两个受保护的xls文件(使用org.apache.poi.hssf.record.crypt)和受保护的xlsx文件(使用org.apache.poi.poifs.crypt).你试过这些吗?
如果您正在使用HSSF(对于xls文件),则需要在打开文件之前设置密码.您通过以下呼叫执行此操作:
org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password);
之后,HSSF应该能够打开您的文件.
对于XSSF,您需要以下内容:
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("protect.xlsx")); EncryptionInfo info = new EncryptionInfo(fs); Decryptor d = Decryptor.getInstance(info); d.verifyPassword(Decryptor.DEFAULT_PASSWORD); XSSFWorkbook wb = new XSSFWorkbook(d.getDataStream(fs));
有关详细信息,请参阅POI加密文档页面