当前位置: 首页 > 知识库问答 >
问题:

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

韦棋
2024-07-23

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

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

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

共有1个答案

凤棋
2024-07-23

对于导出加密的XLS文件(即Excel 97-2003格式),许多开源库确实没有直接提供加密功能。然而,有一些方法可以实现这一需求:

  1. 自定义加密流程
    你可以在生成XLS文件后,使用其他库或工具(如ZIP库和加密算法)对文件进行加密。例如,你可以先将XLS文件作为一个ZIP文件处理(因为XLS本质上是一个ZIP包),然后应用加密算法(如AES)来加密ZIP的内容。用户接收文件后,将需要使用相应的解密工具或库来解密ZIP内容并提取XLS文件。
  2. 使用较新的Excel格式
    如果你能够切换到较新的Excel格式(如XLSX),那么选择就会更多。例如,Apache POI(对于Java)和EPPlus(对于C#)等库支持对XLSX文件进行加密。你可以创建XLSX文件,然后使用这些库提供的加密功能来保护它。
  3. 使用第三方工具或服务
    有时,你可以使用外部工具或服务来加密文件。这些工具可以作为你应用程序的一个步骤,或者你可以让用户自己下载并加密文件。
  4. 自定义开发
    如果你对Excel文件格式和加密有深入的了解,你可以尝试自定义开发一个加密库。但这是一个复杂且耗时的过程,通常不推荐这样做,除非你有特殊的需求或资源。
  5. 寻找或请求功能
    你可以搜索现有的开源项目,看是否有其他人已经实现了这一功能。如果没有,你可以考虑向某个项目的维护者提出功能请求,或者自己为项目贡献这个功能。
  6. 商业解决方案
    如果开源解决方案不可行,你可能需要考虑使用商业库或服务。这些产品通常提供更完整和稳定的解决方案,但可能会有许可或费用问题。

示例(Java + Apache POI + 自定义加密)

虽然Apache POI本身不直接支持加密XLS文件,但你可以使用以下策略:

  1. 使用Apache POI创建XLS文件。
  2. 使用Java的ZIP库(如java.util.zip)将XLS文件作为ZIP文件读取。
  3. 遍历ZIP中的条目,并对每个条目应用加密算法(如AES)。
  4. 将加密后的条目写回新的ZIP文件。
  5. 将新的ZIP文件保存为加密的XLS文件。

注意:这种方法会创建一个自定义的、非标准的加密XLS文件。你需要确保接收文件的用户有相应的解密工具或库来访问内容。

 类似资料:
  • 请问有什么开源的基于react的博客开源项目呢?

  • Transt secret后端处理在途数据的加密函数。Vault不存储发送到后端的数据。它也可以被视为“加密作为一种服务”。 是否支持使用secp192r1曲线的ECDSA? -创建指定类型的新命名加密密钥,以后可用于加密/解密或签名/验证。它是否创建了私有和公共密钥对?是否有获取/输出公钥的方法? 是否可以创建执行加密操作但不返回私钥的自定义秘密后端?

  • 主要想做个官网+后台管理的项目,想请教一下,有没有什么成熟的开源项目或者框架可以用的

  • 问题内容: 我正在尝试使用将3D模型加载到Three.js中,并且该3D模型与整个网站位于同一目录中。 我遇到了错误,但是我不知道是什么原因引起的,也不知道如何解决。 问题答案: 我的crystal ball说您正在使用或加载模型,这对错误消息保持正确,因为它们不是 因此,您既可以在本地PC上安装Web服务器,也可以将模型上传到其他地方,然后使用并将URL更改为 起源在RFC-6454中定义为 因

  • 问题内容: 我有以下加密数据: 对其进行解密的密码是: (这是来自胡言乱语的例子) 在命令行中使用openssl: 输出为: 使用我的NodeJS应用程序: 我在一行中遇到以下错误。 我想念什么吗?谢谢。 问题答案: 加密的数据以8字节的“魔术”开头,表示存在盐(的ASCII编码)。然后接下来的8个字节是盐。现在是个坏消息:Node.js似乎没有对EVP_BytesToKey方法使用盐: 那是盐。

  • 我得到以下错误: 我知道这个问题以前已经回答过了,但我仍然没有找到解决问题的方法。我试着在chrome上运行<code>。exe--允许从命令提示符下的文件访问文件,并将文件移动到本地文件系统,但我仍然收到相同的错误。 我感谢任何建议!

  • 根据,以下是它支持的密码: 我正在端口443上运行一个简单的node.js服务器。运行时,以下是密码: 我不明白的是,为什么实际支持的密码列表要短那么多? 更令人困惑的是,当我在node中获得支持的密码列表时,我会发现一个很长的列表: ['AES128-GCM-SHA256','AES128-SHA','AES128-SHA256','AES256-GCM-SHA384','AES256-SHA'

  • 问题内容: 我有与回购和东西依赖的Maven项目。我想“导出”具有所有依赖项的源,以便我可以在IDE中成功打开它,而无需在计算机上运行Maven。 将项目打包到war文件中时,它具有所有依赖性。 因此,我想将所有依赖项以及我的源收集在一个地方,可以使用IDE(Eclipse或IDEA)打开所有检测到的库? 问题答案: 尝试将Maven-dependency-plugin与目标副本相关性 PS。 您