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

如何在Java中打开密码保护的docx文件?

郭阳泽
2023-03-14

我想使用Apache POI打开一个受密码保护的docx文件。有谁能帮我把完整的代码给我吗?我无法获得此代码的解决方案

线程“main”org.apache.poi.poifs.fileSystem.OfficeXMLFileException中出现异常:提供的数据似乎在Office2007+XML中。您正在调用POI中处理OLE2 Office文档的部分。您需要在org.apache.POI.poifs.storage.headerblock上调用POI的不同部分来处理此数据(例如XSSF而不是HSSF)。(headerblock.java:126)在org.apache.POI.poifs.storage.headerblock上(headerblock.java:113)在org.apache.POI.poifs.filesystem.npoifsfilesystem上(npoifsfilesystem.java:301)在org.apache.POI.HSSF.usermodel.hssfworkbook上(hssfworkbook.java:413)在org.apache.POI.HSSF.usermodel.hssfworkbook上(

  POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("D:/abc.docx"));
    EncryptionInfo info=new EncryptionInfo(fs);
    Decryptor decryptor=Decryptor.getInstance(info);
    if(!decryptor.verifyPassword("user"))
    {
        throw new RuntimeException("document is encrypted");
    }
    InputStream in=decryptor.getDataStream(fs);
    HSSFWorkbook wb=new HSSFWorkbook(in);
    File f=new File("D:/abc5.docx");
    wb.write(f);

共有1个答案

巴洲
2023-03-14

我已经解决了。代码在下面

    POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("D:/abc.docx"));
    EncryptionInfo info=new EncryptionInfo(fs);
    Decryptor decryptor=Decryptor.getInstance(info);
    XWPFDocument document=null;
    if(decryptor.verifyPassword("password"))
    {
          InputStream dataStream = decryptor.getDataStream(fs); 
          document = new XWPFDocument(dataStream); 
    }else{
        throw new Exception("file is protected with password...please open with right password");
    }
    File f=new File("D:/abc.docx");
    FileOutputStream fos = new FileOutputStream(f);
    document.write(fos);
    document.close();
 类似资料:
  • 问题内容: 我正在尝试在excel中打开一个受密码保护的文件,而无需任何用户交互。我在线搜索,发现此代码使用win32com.client运行此程序时,仍然提示输入密码… 问题答案: 我认为命名参数在这种情况下不起作用。因此,您必须执行以下操作: 有关Workbooks.Open方法的详细信息,请参见http://msdn.microsoft.com/zh- cn/library/office/f

  • 我如何用Java打开一个受密码保护的目录,然后访问这个目录中的文件(在Windows中)? 我想在Windows中的网络文件夹(z://)中打开一个文件夹(测试)。但是我需要密码来打开网络文件夹(z://test)。用Java编写程序是可能的吗?在“test”文件夹中是我想在控制台中显示的数据 谢谢你的帮助!

  • 到目前为止,我一直在创建一个文件(txt/excel),使用buffered Writer创建文本文件,使用JExcel API创建excel文件。这些文件是我只用Java创建的。 现在我想让文件密码在这两种情况下都受到保护,比如,文件可以被很多人访问,但只有选中的人可以使用自己的登录ID/密码访问它。 有可能吗?。。 谢谢

  • 问题内容: 我已经使用Java创建了zip文件,如下所示 现在,我想在单击zip文件时提示我输入密码,然后解压缩zip文件。请任何帮助,我应该怎么走? 问题答案: 尝试以下基于以下代码Zip4j: 来自。 用法示例:

  • 问题内容: 我有一个密码保护Excel文件的问题。 情况是,我有一个zip文件,其中有一个Excel文件。我需要编写一个Java程序,以密码保护Excel文件。因此,用户应该能够解压缩文件(压缩文件无需密码保护)。但是,Excel需要使用密码保护。当用户尝试解压缩文件时,他应该能够解压缩。当他尝试打开Excel文件(位于解压缩的文件夹内)时,它必须要求输入密码。问题类似于使用Java保护excel