请问有什么开源的项目支持导出加密的 xls 文件吗?或者微软官方加解密文档提供?

108 天前
 zurmokeeper

请问有什么开源的项目支持导出加密的 xls 文件吗?

试过 java 的 poi, easyexcel, c# 的 npoi, EPPlus, ExcelDataReader ,python 的 msoffcrypto-tool

c++ 的 openoffice, libreoffice ,go 的 excelize 都没有发现没有这个功能。

现在想写 xls 文件的加密,但是一直没有成功,所以想找一些资源来参照,官方文档 完全没有说加密,只说了解密。

3832 次点击
所在节点    程序员
58 条回复
asdjgfr
108 天前
SWALLOWW
108 天前
换个思路,导出个加密的压缩包?
yesterdaysun
108 天前
zurmokeeper
108 天前
@asdjgfr 没有的,这个加解密都不支持的
zurmokeeper
108 天前
@yesterdaysun 都看过了,不支持 xls 格式的加密
zurmokeeper
108 天前
@SWALLOWW 还是想实现 xls 自己的加密,就像 WPS 保存 xls 格式的设密码一样,其实我已经实现了一部分,但是加密以后的文件和 WPS 加密出来还有少量字节数据的差异,不知道哪里不对,所以想找其他资料对比一下
yesterdaysun
108 天前
wxyrrcj
108 天前
wxyrrcj
108 天前
// 把工作薄输出到字节里面
bout = new ByteArrayOutputStream();
workbook.write(bout);
bout.flush();
workbookinput = new ByteArrayInputStream(bout.toByteArray());
// 读取临时文件进行加密
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(fs, EncryptionMode.agile);
Encryptor enc = info.getEncryptor();
enc.confirmPassword("123456");//打开 excel 密码
// 然后把字节输入到输入流,然后输入到 OPC 包里面
opc = OPCPackage.open(workbookinput);
os = enc.getDataStream(fs);
opc.save(os);
opc.close();
// 返回给浏览器
outstream = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition",
"attachment; filename=" + new String(title.getBytes(), "UTF-8") + ".xlsx");
response.setContentType("application/x-download");
fs.writeFilesystem(outstream);
wxyrrcj
108 天前
再转下 xls 不知道行不行
zurmokeeper
108 天前
@wxyrrcj 不行,xls 不是用 EncryptionMode.agile 加密的,这个是 xlsx 格式用的,xls 有自己的加密算法
zurmokeeper
108 天前
@yesterdaysun 商业的我看不到源码,说是有个 openxls 的开源版,却一直没找到源码
ShirOvO
108 天前
easyexcel 里面我是使用的
public void afterSheetCreate(
WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
// 设置保护密码
writeSheetHolder.getSheet().protectSheet("123456");
}来设置密码,刚才试了一下 xls 格式,也是可用的
zurmokeeper
108 天前
@ShirOvO 你这个只是单元格的保护,不是整个文件的保护,发不了图片有点尴尬
ShirOvO
108 天前
@zurmokeeper #14 你是需要密码才能打开 excel 吗?
victorting
108 天前
zurmokeeper
108 天前
@ShirOvO 我是需要把一个 xls 用密码加密以后导出,WPS 和 office 都是支持的,然后打开的时候输入密码才能打开
zurmokeeper
108 天前
@victorting 这个只支持 xlsx 格式,不支持 xls 的
ShirOvO
108 天前
@zurmokeeper #17 这样的 xiao'guo'ma 效果吗?导出的 xls 格式的
cheng6563
108 天前
xls 就是这样的,无标准,那几个字节自己猜吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX