java 加密 excel


java对excel文件进行加密?

打开文件后就提示输入密码,否则不能打开文件


 org.apache.poi.hssf.usermodel.HSSFWorkbook
public void writeProtectWorkbook(@NotNull java.lang.String password,
                             @NotNull java.lang.String username)

这个api只能对文件进行写保护。

java excel

涛哥叫我来视察 9 years, 9 months ago
一大波小强 answered 9 years, 9 months ago

有点好奇,找了一下,的确如题主所说,poi的支持不太好,加密只能是改成只读的没办法完全拦截
poi源码:


 public void writeProtectWorkbook(String password, String username) {
        FileSharingRecord frec = getFileSharing();
        WriteAccessRecord waccess = getWriteAccess();
        /* WriteProtectRecord wprotect = */getWriteProtect();
        frec.setReadOnly((short) 1);
        frec.setPassword(FileSharingRecord.hashPassword(password));
        frec.setUsername(username);
        waccess.setUsername(username);
    }

然后又找了下,很多人问没有被解决的,找到了个替代的方法见 poi-security


 WorksheetEncryptor.encrypt(excelFile, new FileOutputStream("file.xlsx"), "111");
        Workbook decrypt = WorksheetDecryptor.decrypt(new File("file.xlsx"), "111");

下来大概试了一下,只能修改xlsx的文件,是用加密把xlsx本身包装了一下,之后再用解密的方法来得到excel对象,加密后的文件excel软件没办法正常读取了

洗手见天使 answered 9 years, 9 months ago

Your Answer