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修正