使用的包:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version><scope>provided</scope>
</dependency>

使用xlsx格式(excel 2007版本以后的格式)

poi官方文档的例子的使用agile加密,用 OPCPackage 这个东西将内容写入文件流,但是我用了之后加密是成功了,文件却打不开了。
百度了很多答案都是和官方例子一样。

最后在这找到了答案,需要翻墙
https://stackoverflow.com/questions/52428828/apache-poi-encrypted-xlsx-cannot-be-opened-in-excel

核心代码

POIFSFileSystem fs = new POIFSFileSystem();EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
// final EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile, CipherAlgorithm.aes256, HashAlgorithm.sha256, -1, -1, null);Encryptor enc = info.getEncryptor();
//set the password// OPCPackage opc = OPCPackage.open(new File(path),PackageAccess.READ_WRITE); 官方文档的例子用的这个,贼坑if(StringUtils.isBlank(password)){enc.confirmPassword("11111");}else {enc.confirmPassword(password);}OutputStream os = enc.getDataStream(fs);wb.write(os);os.close();FileOutputStream fos = new FileOutputStream(path);fs.writeFilesystem(fos);fos.close();

完整代码:

import java.io.*;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.poifs.crypt.*;import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class XSSFEncryption {public static void doEncrypt(String data) throws Exception {POIFSFileSystem fs = new POIFSFileSystem();EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);Encryptor enc = info.getEncryptor();enc.confirmPassword("pass");Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("sheet1");sheet.createRow(0).createCell(0).setCellValue(data);// write the workbook into the encrypted OutputStreamOutputStream encos = enc.getDataStream(fs);workbook.write(encos);workbook.close();encos.close(); // this is necessary before writing out the FileSystemOutputStream os = new FileOutputStream("provawrite.xlsx");fs.writeFilesystem(os);os.close();fs.close();}public static void main(String[] args) throws Exception {doEncrypt("Test");}
}

POI加密Excel文件导出相关推荐

  1. 项目总结23:POI生成Excel文件并浏览器导出

    项目总结23:POI生成Excel文件并浏览器导出 具体的逻辑可以参考Controller层的注释 代码1-前端html <button onclick="downLoad()&quo ...

  2. Aspose-Cells结合Apache POI生成excel文件以及转换为pdf

    最近有个需求是需要将数据库中的符合条件的交易流水导出生成为excel,并转换为pdf,提供给客户下载,客户下载核对并签章. 需要用到的jar包依赖: <dependency><gro ...

  3. Java 使用 POI 对 Excel文件 进行读写操作

    Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...

  4. java excel里对角线,使用POI在excel文件单元格实现对角线

    [java POI操作Excel文件(合并单元格.插入图片.超链接)] 查看POI的API可以发现HSSFBorderFormatting.setBoderDiagonal接口,尝试使用这个接口并没有 ...

  5. 如何优雅的用POI导入Excel文件

    在企业级项目开发中,要经常涉及excel文件和程序之间导入导出的业务要求,那么今天来讲一讲excel文件导入的实现.java实现对excel的操作有很多种方式,例如EasyExcel等,今天我们使用的 ...

  6. 如何优雅地实现 Excel 文件导出功能?(阿里出品的 EasyExcel,安利一波)

    EasyExcel 前言 导出是后台管理系统的常用功能,当数据量特别大的时候会内存溢出和卡顿页面,曾经自己封装过一个导出,POI百万级大数据量EXCEL导出 采用了分批查询数据来避免内存溢出和使用SX ...

  7. Excel文件导出总结,包含大数据量的分批导出方式

    文章目录 需求背景 参考内容 导出方式 代码实现 Excel4J 普通导出 POI原生方式 普通导出 大数据量分批导出 依赖版本 实现思路 POI工具类 数据写入 调用测试 测试结果 一个小意外 Ea ...

  8. 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10

    使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu] 不显示删除回复             显示所有回复     ...

  9. Java面试poi中excel版本大小_java 中 poi解析Excel文件版本问题解决办法

    java 中 poi解析Excel文件版本问题解决办法 发布时间:2020-10-02 03:46:15 来源:脚本之家 阅读:91 作者:程诺 poi解析Excel文件版本问题解决办法 poi解析E ...

  10. excel文件导出相应数据统计内容

    这次完成了一个以excel文件导出相应数据统计内容的功能,选取其中的一个放在下面: 1.首先在资源文件夹下创建一个excel的package,并创建一个xlsx文件 创建的时候要注意版本兼容问题,20 ...

最新文章

  1. 在Blender中制作火箭发射烟雾和火焰模拟的动画
  2. 【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐
  3. 【 FPGA 】序列检测器的Mealy状态机实现
  4. Resource 资源 ---Day09 2014-06-13
  5. diskgenius linux版_纯净版Windows10系统安装详细教程
  6. Magento后台表单字段添加备注
  7. 以表达式作为参数传入SQL的存储过程中去
  8. Requests库基本使用
  9. spring官网下载
  10. 雪景特效制作软件JixiPix Snow Daze for Mac
  11. ios底层是linux,深入iOS系统底层之CPU寄存器介绍
  12. matlab syms用途,syms在matlab中有什么用
  13. 大学计算机信息技术实践教程,清华大学出版社-图书详情-《大学信息技术基础实验教程(Windows7 + Office2010)》...
  14. 利用Python3四舍五入保留两位小数
  15. Tennessee Eastman(TE过程)简介
  16. Web初学者-作业3-[聚光灯效果]
  17. vue3图片描点标记
  18. python csv/txt转换成excel
  19. 人生不问长短,但求白首同心之人
  20. vivo云测平台上线Android 13开发者预览版通知

热门文章

  1. 进度模型方法论,利用“削峰填谷”进行资源优化
  2. java 破解版 aspose-word 切图
  3. 新冠时空分析——Global evidence of expressed sentiment alterations during the COVID-19 pandemic
  4. 政府部门服务器拒收邮件 怎么办,hotmail 邮箱最近反映拒收邮件,请问怎么解决?...
  5. gcd euclid_使用EUCLID的算法找到两个数字的GCD(最大公约数)
  6. 无刷直流电机 PWM控制
  7. iOS之UITableView的使用——多分区表格以及分区索引
  8. finecms aip.php漏洞,finecms V5 会员头像任意文件上传漏洞 附修复代码
  9. 抵制微信公众号,从我做起
  10. 抗光幕布哪个牌子好?