POI加密Excel文件导出
使用的包:
<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文件导出相关推荐
- 项目总结23:POI生成Excel文件并浏览器导出
项目总结23:POI生成Excel文件并浏览器导出 具体的逻辑可以参考Controller层的注释 代码1-前端html <button onclick="downLoad()&quo ...
- Aspose-Cells结合Apache POI生成excel文件以及转换为pdf
最近有个需求是需要将数据库中的符合条件的交易流水导出生成为excel,并转换为pdf,提供给客户下载,客户下载核对并签章. 需要用到的jar包依赖: <dependency><gro ...
- Java 使用 POI 对 Excel文件 进行读写操作
Java 使用 POI 对 Excel文件 进行读写操作 一.背景 目前正在做一个问卷功能模块,收集完问卷信息后,需要将数据库中的数据导出到Excel数据表中进行留存,因此就学习了在Java中如何对E ...
- java excel里对角线,使用POI在excel文件单元格实现对角线
[java POI操作Excel文件(合并单元格.插入图片.超链接)] 查看POI的API可以发现HSSFBorderFormatting.setBoderDiagonal接口,尝试使用这个接口并没有 ...
- 如何优雅的用POI导入Excel文件
在企业级项目开发中,要经常涉及excel文件和程序之间导入导出的业务要求,那么今天来讲一讲excel文件导入的实现.java实现对excel的操作有很多种方式,例如EasyExcel等,今天我们使用的 ...
- 如何优雅地实现 Excel 文件导出功能?(阿里出品的 EasyExcel,安利一波)
EasyExcel 前言 导出是后台管理系统的常用功能,当数据量特别大的时候会内存溢出和卡顿页面,曾经自己封装过一个导出,POI百万级大数据量EXCEL导出 采用了分批查询数据来避免内存溢出和使用SX ...
- Excel文件导出总结,包含大数据量的分批导出方式
文章目录 需求背景 参考内容 导出方式 代码实现 Excel4J 普通导出 POI原生方式 普通导出 大数据量分批导出 依赖版本 实现思路 POI工具类 数据写入 调用测试 测试结果 一个小意外 Ea ...
- 使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10
使用POI 读取 Excel 文件,读取手机号码 变成 1.3471022771E10 [问题点数:40分,结帖人xieyongqiu] 不显示删除回复 显示所有回复 ...
- Java面试poi中excel版本大小_java 中 poi解析Excel文件版本问题解决办法
java 中 poi解析Excel文件版本问题解决办法 发布时间:2020-10-02 03:46:15 来源:脚本之家 阅读:91 作者:程诺 poi解析Excel文件版本问题解决办法 poi解析E ...
- excel文件导出相应数据统计内容
这次完成了一个以excel文件导出相应数据统计内容的功能,选取其中的一个放在下面: 1.首先在资源文件夹下创建一个excel的package,并创建一个xlsx文件 创建的时候要注意版本兼容问题,20 ...
最新文章
- 在Blender中制作火箭发射烟雾和火焰模拟的动画
- 【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐
- 【 FPGA 】序列检测器的Mealy状态机实现
- Resource 资源 ---Day09 2014-06-13
- diskgenius linux版_纯净版Windows10系统安装详细教程
- Magento后台表单字段添加备注
- 以表达式作为参数传入SQL的存储过程中去
- Requests库基本使用
- spring官网下载
- 雪景特效制作软件JixiPix Snow Daze for Mac
- ios底层是linux,深入iOS系统底层之CPU寄存器介绍
- matlab syms用途,syms在matlab中有什么用
- 大学计算机信息技术实践教程,清华大学出版社-图书详情-《大学信息技术基础实验教程(Windows7 + Office2010)》...
- 利用Python3四舍五入保留两位小数
- Tennessee Eastman(TE过程)简介
- Web初学者-作业3-[聚光灯效果]
- vue3图片描点标记
- python csv/txt转换成excel
- 人生不问长短,但求白首同心之人
- vivo云测平台上线Android 13开发者预览版通知
热门文章
- 进度模型方法论,利用“削峰填谷”进行资源优化
- java 破解版 aspose-word 切图
- 新冠时空分析——Global evidence of expressed sentiment alterations during the COVID-19 pandemic
- 政府部门服务器拒收邮件 怎么办,hotmail 邮箱最近反映拒收邮件,请问怎么解决?...
- gcd euclid_使用EUCLID的算法找到两个数字的GCD(最大公约数)
- 无刷直流电机 PWM控制
- iOS之UITableView的使用——多分区表格以及分区索引
- finecms aip.php漏洞,finecms V5 会员头像任意文件上传漏洞 附修复代码
- 抵制微信公众号,从我做起
- 抗光幕布哪个牌子好?