我使用apache创建了两个类,用于读取和写入进程所需的excel文件。这些excel文件使用“保护”工作簿使用密码加密。加密工作,excel阅读器不接受错误的密码输入(如果您在MS中手动设置密码)。但是,由excel编写器生成的由密码加密的excel文件不起作用。当读取器读取生成的excel文件时,它接受任何密码,并能够在excel文件中获取数据。但是,当您通过MS手动打开excel文件时,它是用密码加密的。
writeExcelWithFormula {
HSSFWorkbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Batch ACE");
FileOutputStream fos = new FileOutputStream(fileName);
workbook.write(fos);
fos.close();
encryptFile(fileName,employeeList);
encryptFile {
try {
fileInput = new FileInputStream(fileName);
bufferInput = new BufferedInputStream(fileInput);
poiFileSystem = new POIFSFileSystem(bufferInput);
Biff8EncryptionKey.setCurrentUserPassword("password");
HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem, true);
HSSFSheet sheet = workbook.getSheetAt(0);
sheet.setDefaultColumnWidth(25);
//create data....
fileOut = new FileOutputStream(fileName);
workbook.writeProtectWorkbook(Biff8EncryptionKey.getCurrentUserPassword(), "");
workbook.write(fileOut);
加密可以手动完成(通过MS打开)。我在bonita中使用这些类。我是apache poi和bonita的新手,谢谢!
发布于 2015-08-04 06:51:41
正如在关于加密支持的Apache页面上解释的那样,HSSF对.xls
文件的加密/保护支持是只读的。不支持更改或创建受密码保护的文件,只能使用HSSF生成不受保护的.xls
文件。如果您在HSSF中打开一个受保护的文件,并将其保存出来,则保护将被删除。
如果您需要用POI生成受保护的/加密的Excel文件,那么您唯一的选择就是使用XSSF和.xlsx
文件。XSSF支持读取和写入受保护的文件,详细说明如何在加密支持页上执行这些操作。
https://stackoverflow.com/questions/31811705
复制相似问题