当前位置: 首页 > 面试题库 >

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

松博耘
2023-03-14
问题内容

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

情况是,我有一个zip文件,其中有一个Excel文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩文件(压缩文件无需密码保护)。但是,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文件的最佳方式,并压缩和解压缩数据使用的Java API
  • 使用密码保护的Excel文件中的提示对提取的Excel文件进​​行密码保护
  • 使用Java Compress Large File中的提示压缩受密码保护的excel文件


 类似资料:
  • 问题内容: 我有一个受密码保护的Excel电子表格。我需要打开此电子表格并从中读取数据。我一直在尝试使用POI API无济于事。首选Java解决方案,但任何想法都会有所帮助。 编辑:是的,我有密码。该文件在excel中受密码保护;必须输入密码才能查看电子表格。 Edit2:我无法使用带有密码的POI打开它,我在寻找替代解决方案。 问题答案: 您可以使用JExcelApi。 自从我这样做已经有一段时

  • 现在新的要求是密码保护他们。下面是我使用的聚合策略。如何实现这一点?

  • 问题内容: 我正在尝试在excel中打开一个受密码保护的文件,而无需任何用户交互。我在线搜索,发现此代码使用win32com.client运行此程序时,仍然提示输入密码… 问题答案: 我认为命名参数在这种情况下不起作用。因此,您必须执行以下操作: 有关Workbooks.Open方法的详细信息,请参见http://msdn.microsoft.com/zh- cn/library/office/f

  • 我需要解压缩一个受密码保护的zip文件。 到目前为止,我得到了互联网的帮助,我试图理解代码。 但它抛出nullpointerexception。我真的很困惑。是“孩子”还是别的什么。请解释一下。 线程“main”java中出现异常。unzip2处的lang.NullPointerException。Unzip2。main(Unzip2.java:27)C:\Users\zxc\AppData\Lo

  • 我正在尝试用VBA锁解锁excel文件。我用默认密码将文件锁定在代码中,并将此密码给其他文件中的用户。总是相同的密码,所以没有必要输入它由用户,我给他的文件锁定在一开始。 但我没有任何办法知道“密码是否好”。 谢谢你的帮助,抱歉我的英语!