如何在 Java 中使用密码保护压缩的 Excel 文件?

2023-12-12

我有一个关于保护 Excel 文件的密码的问题。

情况是,我有一个 zip 文件,其中有一个 Excel 文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩该文件(zip 文件不需要受密码保护)。但是,Excel 需要密码保护。当用户尝试解压缩文件时,他应该能够这样做。 当他尝试打开 Excel 文件(位于解压缩的文件夹内)时,必须要求输入密码。问题类似于用java保护excel文件,Excel 文件被压缩,这增加了复杂性。

我有代码,该密码仅保护 zip 文件,但这不是我想要的。

import java.io.File;
import java.util.ArrayList;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;

/**
* Demonstrates adding files to zip file with standard Zip Encryption
*/

public class AddFilesWithStandardZipEncryption
{
    public AddFilesWithStandardZipEncryption()
    {
    try {
            // Initiate ZipFile object with the path/name of the zip file.
            //ZipFile zipFile = new ZipFile("c:\\ZipTest\\AddFilesWithStandardZipEncryption.zip");
            ZipFile zipFile = new ZipFile("C:\\homepage\\workspace\\PasswordProtectedFiles\\new.zip");

            // Build the list of files to be added in the array list
            // Objects of type File have to be added to the ArrayList
            ArrayList filesToAdd = new ArrayList();
            //filesToAdd.add(new File("C:\\homepage\\workspace\\passwordprotectedzipfile\\profile\\profile.txt"));
            filesToAdd.add(new File("C:\\homepage\\workspace\\PasswordProtectedFiles\\new.xlsx"));
            //filesToAdd.add(new File("c:\\ZipTest\\myvideo.avi"));
            //filesToAdd.add(new File("c:\\ZipTest\\mysong.mp3"));

            // Initiate Zip Parameters which define various properties such
            // as compression method, etc.
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // set compression method to store compression

            // Set the compression level
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 

            // Set the encryption flag to true
            // If this is set to false, then the rest of encryption properties are ignored
            parameters.setEncryptFiles(true);

            // Set the encryption method to Standard Zip Encryption
            parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);

            // Set password
            parameters.setPassword("test123!");

            // Now add files to the zip file
            // Note: To add a single file, the method addFile can be used
            // Note: If the zip file already exists and if this zip file is a split file
            // then this method throws an exception as Zip Format Specification does not 
            // allow updating split zip files
            zipFile.addFiles(filesToAdd, parameters);
        }
        catch (ZipException e)
        {
            e.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        new AddFilesWithStandardZipEncryption();
    }
}

如果不解压缩,就不可能对 zip 文件内的 Excel 进行密码保护。

这是你可以做的

  • 使用提示解压缩内容使用java提取zip文件的最佳方法是什么 and 使用 Java API 压缩和解压缩数据
  • 使用密码保护提取的 Excel 文件受密码保护的 Excel 文件
  • 使用以下提示压缩受密码保护的 Excel 文件Java 压缩大文件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Java 中使用密码保护压缩的 Excel 文件? 的相关文章

随机推荐

  • Angular2 的 Http.post 在 POST 方法调用的响应中不返回标头

    我正在调用 REST 端点 我想添加资源 如下 但是 当我的服务调用 Http 的 post 方法时 它将调用请求 但不会返回响应的标头 至少 我遇到了 Response 实例的空 headers 对象 我确实期望响应标头 特别是 我希望
  • 如何从 VBA 函数返回结果

    如何从函数返回结果 例如 Public Function test As Integer return 1 End Function 这会产生编译错误 如何让这个函数返回一个整数 对于非对象返回类型 您必须将值分配给函数的名称 如下所示 P
  • 从数据框中按类别选择随机行?

    我有一个数据框如下 Category Name Value 我如何选择每个类别 5 个随机名称 使用sample使用所有行作为可能的候选行返回随机行 但是 我想指定每个类别的随机行数 有什么建议么 Update 我愿意使用ddply 在没有
  • Rabin-Karp 中的滚动哈希

    我正在尝试实现 Rabin Karp 来查找子字符串 我陷入了滚动哈希 试图使用维基百科中建议的公式 define MOD 1000000007 unsigned long long rolling hash const char str
  • 我不小心删除了 phpMyAdmin 中的管理员帐户。如何重新授予 root@localhost 权限?

    我不小心删除了 phpMyAdmin 中的管理员帐户 现在 我根本无能为力 但是 我可以访问控制台 并且它可以让我登录 我如何重新向 root localhost 授予权限 有一个简单易行的方法可以解决这个问题 您需要停止 mysql 并转
  • 根据 WooCommerce 中的自定义结账单选按钮和文本字段设置动态费用

    我正在尝试创建一个自定义结帐单选按钮 以百分比计算餐厅小费 对于单选按钮 静态值工作正常 但是 我想获取小计并计算自定义单选按钮单击的一定百分比 这是我的代码 add action woocommerce after checkout bi
  • 如何获取所选的特定项目?

    附截图 我正在学习 AngularJS 我找不到方法来删除单击 删除 按钮的所选项目 有什么办法可以做到吗 附代码 ul class unstyled li li ul
  • Angular2中如何获取GET参数?

    通过访问myproject dev people filter 5Bindustry 5D finance filter 5BstartWith 5D a Angular2将url指向myproject dev people 这是我的路线配
  • 这是在 java 中将 FocusListener 添加到 JTextFields 的正确方法吗?

    我有数百个JTextFields在我的 Java 应用程序中 我想添加FocusListener对所有这些设置水平对齐方式的文本和添加焦点监听器在每个文本字段上 所以 我做了这个方法 而且效果很好 但我只是想知道这种方法是否正确 或者有什么
  • 使用 sed 的追加/更改/插入而不带换行符

    我想替换 SED 中的模式空间 我可以这样做s hello world 但我可以使用c以某种方式命令 在我的 sed 脚本中不使用换行符 我并不完全清楚这是否可能 同样的问题a and i命令 如果你的 shell 是 bash 这里有一个
  • Rails:调用“id”主键方法时出现“堆栈级别太深”错误

    这是转发于另一个问题 这次隔离比较好 在我的environment rb 文件中 我更改了这一行 config time zone UTC 到这一行 config active record default timezone utc 于是乎
  • 如何在导航抽屉中的两个片段之间通信数据

    我有一个导航抽屉 其中包含不同的片段 每个项目显示一个片段 我想将数据从一个片段传递到另一个片段 我只有一个包含导航抽屉的活动 其中有一个片段列表 我尝试了很多解决方案 捆绑和意图 但我无法解决我的问题 任何人都可以帮我吗 这是我的第一个片
  • 如何在 Windows Phone 7 中使用 BinaryFormatter

    如何在 Windows Phone 7 中使用 BinaryFormatter 我用这个using System Runtime Serialization Formatters Binary在 service1 svc cs 中 但我无法
  • 使用 Windows 批处理文件从 txt 文件中仅读取 x 行

    如何从 a txt 文件中只读取 X 行 该文件包含目录的所有名称 我只想读取 x 行 X 可以是 1 到 99 之间的数字 您需要根据需要修改此设置 但下面的脚本将循环遍历文件 directories txt 并回显该行的内容 直到达到中
  • Java 中什么会引发 IOException?

    java io IOException似乎是最常见的异常类型 巧合的是 它似乎也是最模糊的 我不断看到throws IOException每当使用套接字 文件等进行编写时 我实际上从未被触发过 所以我想知道应该触发异常的是什么 该文档对于解
  • 不同实体值具有相同同义词的对话流歧义

    我在使用对话流 api ai 开发代理时遇到问题 我使用了很多彼此不同的实体值 然而 某些实体值有类似的同义词 但代理仅返回一个值 我怎样才能获得所有可能的匹配或提出问题来解决歧义 例如我有一个意图 告诉我 ABC 特快列车的位置 if m
  • Java Spring + Jersey 子资源:在运行时注入构造函数参数

    我定义了以下方法 返回一个表示子资源定位器 泽西岛 的 bean Path slug public PageResource page PathParam slug String siteSlug throws AppException s
  • 如何禁止用户在 Groovy 脚本中做坏事?

    我计划将 Groovy 脚本引擎集成到我的游戏中 这样它将为游戏提供良好的可修改性 但是如何防止玩家编写邪恶的脚本 例如删除 C 驱动器上的所有文件 Groovy 包括类似库java io File默认情况下 因此一旦他们决定编写此类脚本
  • Swift - 如何检测方向变化

    我想将两个图像添加到单个图像视图 即横向一个图像和纵向另一个图像 但我不知道如何使用快速语言检测方向变化 我尝试过这个答案 但它只需要一张图片 override func viewWillTransitionToSize size CGSi
  • 如何在 Java 中使用密码保护压缩的 Excel 文件?

    我有一个关于保护 Excel 文件的密码的问题 情况是 我有一个 zip 文件 其中有一个 Excel 文件 我需要编写一个Java程序 以密码保护Excel文件 因此 用户应该能够解压缩该文件 zip 文件不需要受密码保护 但是 Exce