Java 如何使用ApachePOI写入加密的.xlsx文件

Java 如何使用ApachePOI写入加密的.xlsx文件,java,excel,encryption,overwrite,Java,Excel,Encryption,Overwrite,我试图在现有的加密文件中覆盖。阅读效果很好,但写作却失败了 “--cell.setCellValue(“数据”);--”。找不到源 public boolean excelWrite(String startLabel, String seitenLabel, String Pfad, double data, int zeile, int reihe) { try { NPOIFSFileSystem fs = new NPOI

我试图在现有的加密文件中覆盖。阅读效果很好,但写作却失败了
“--cell.setCellValue(“数据”);--”
。找不到源

public boolean excelWrite(String startLabel, String seitenLabel, String Pfad, double data, int zeile, int reihe)
    {
        try
        {

            NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(Pfad));
            EncryptionInfo info = new EncryptionInfo(fs);
            Decryptor d = Decryptor.getInstance(info);
            try
            {

                if (!d.verifyPassword("XYZ"))
                {
                    throw new RuntimeException("Unable to process...");
                }
                InputStream dataStream = d.getDataStream(fs);
                XSSFWorkbook wb = new XSSFWorkbook(dataStream);
                try
                {

                    XSSFSheet sheet = wb.getSheet(seitenLabel);
                    XSSFCell cell = sheet.getRow(zeile).getCell(reihe);

                    cell.setCellValue("data");
                    OutputStream out = new FileOutputStream(Pfad);
                    wb.write(out);
                    out.close();
                }
                catch (IOException e)
                {

                    e.printStackTrace();
                }

            }
            catch (GeneralSecurityException ex)
            {
                throw new RuntimeException("Unable to process...", ex);
            }
        }
        catch (IOException e)
        {

            e.printStackTrace();
        }

        return true;
    }

不知道为什么,但它现在起作用了。xlsx在此之后没有加密,但您可以像apache.org上显示的那样对其进行加密。如果您打算最终也编写一个受密码保护的文件,请不要使用POI 3.12(beta、final,…)。我在加密例程中引入了一个bug,它计算错误的校验和。这已经被修正了3.13倍,不知道为什么,但它现在起作用了。xlsx在此之后没有加密,但您可以像apache.org上显示的那样对其进行加密。如果您打算最终也编写一个受密码保护的文件,请不要使用POI 3.12(beta、final,…)。我在加密例程中引入了一个bug,它计算错误的校验和。这已由3.13 beta1修正