Я использую AbstractXlsxView
Spring для загрузки Excel.
Однако шифрование в загружаемом файле не может быть добавлено.
Ниже показано, как выглядит код для метода реализации AbstractXlsxView
.
Есть ли способ шифрования с использованием AbstractXlsxView
?
class ExcelView extends AbstractXlsxView {
@Override
protected void renderWorkbook(Workbook workbook, HttpServletResponse response) throws IOException {
ServletOutputStream out = response.getOutputStream();
workbook.write(out);
workbook.close();
}
}
Я пытался, но он не работает ..
class ExcelView extends AbstractXlsxView {
@Override
protected void renderWorkbook(Workbook workbook, HttpServletResponse response) throws IOException {
try {
ByteArrayOutputStream fileOut = new ByteArrayOutputStream();
workbook.write(fileOut);
InputStream filein = new ByteArrayInputStream(fileOut.toByteArray());
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
Encryptor enc = info.getEncryptor();
enc.confirmPassword("1234");
OPCPackage opc = OPCPackage.open(filein);
OutputStream os = enc.getDataStream(fs);
opc.save(os);
opc.close();
OutputStream fileOut2 = null;
fileOut2 = response.getOutputStream();
fs.writeFilesystem(fileOut2);
fileOut2.close();
fileOut.close();
} catch (InvalidFormatException e1) {
// open error
e1.printStackTrace();
} catch (GeneralSecurityException e) {
// save error
e.printStackTrace();
}
}
}