我使用 apache poi 创建了两个类,它们读取和写入进程所需的 excel 文件。这些 excel 文件使用保护工作簿使用密码进行加密。加密有效,excel 阅读器不接受错误的密码输入(如果您在 MS excel 中手动设置密码)。但是,应该使用密码加密的 excel 编写器生成的 excel 文件不起作用。当阅读器读取生成的excel文件时,它接受任何密码并能够获取excel文件中的数据。但是当您通过MS excel手动打开excel文件时,它是用密码加密的。
写ExcelWithFormula {
HSSFWorkbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Batch ACE");
FileOutputStream fos = new FileOutputStream(fileName);
workbook.write(fos);
fos.close();
encryptFile(fileName,employeeList);
加密文件 {
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 excel 打开)。我在 bonita bpm 中使用这些类。我是apache poi和bonita的新手,请帮助谢谢!