保护 SXSSFWorkbook (Excel) 并将其转换为字节数组
Protect a SXSSFWorkbook (Excel) and convert it to a byte array
我正在开发一个 Java 函数,该函数预期 return 字节数组中受保护的 Excel 文件 (xlsx)。
public byte[] genProtectedExcel() {
SXSSFWorkbook workbook = new SXSSFWorkbook();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//Code of cells fill in...
//Should be code of workbook encryption...
workbook.write(baos);
return baos.toByteArray();
}
我找到了一个使用 Apache POI 加密支持的解决方案:
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
Encryptor enc = info.getEncryptor();
enc.confirmPassword("foobaa");
InputStream is = <open the SXSSF workbook as stream>
OutputStream os = enc.getDataStream(fs);
IOUtils.copy(is, os);
但是,OutputStream 不能转换为 ByteArrayOutputStream。我试图找到一种将 OutputStream 转换为 ByteArray 的方法,但都失败了。
无论如何创建一个保护 excel 字节数组?
ByteArrayOutputStream baos = new ByteArrayOutputStream();
fs.writeFilesystem(baos );
return baos.toByteArray();
我正在开发一个 Java 函数,该函数预期 return 字节数组中受保护的 Excel 文件 (xlsx)。
public byte[] genProtectedExcel() {
SXSSFWorkbook workbook = new SXSSFWorkbook();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//Code of cells fill in...
//Should be code of workbook encryption...
workbook.write(baos);
return baos.toByteArray();
}
我找到了一个使用 Apache POI 加密支持的解决方案:
POIFSFileSystem fs = new POIFSFileSystem();
EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile);
Encryptor enc = info.getEncryptor();
enc.confirmPassword("foobaa");
InputStream is = <open the SXSSF workbook as stream>
OutputStream os = enc.getDataStream(fs);
IOUtils.copy(is, os);
但是,OutputStream 不能转换为 ByteArrayOutputStream。我试图找到一种将 OutputStream 转换为 ByteArray 的方法,但都失败了。 无论如何创建一个保护 excel 字节数组?
ByteArrayOutputStream baos = new ByteArrayOutputStream();
fs.writeFilesystem(baos );
return baos.toByteArray();