https://stackoverflow.com/questions/55658495/apache-poi-encrypting-xlsx-file-greater-than-2gb-fails POIFSFileSystem is needed for agile encryption. By default, POIFSFileSystem uses in-memory data source. The support for file-backed data source assumes the file is OLE encoded. This is a problem if you want to take an OOXML file and encrypt it. My suggestion is that we create a TempFilePOIFSFileSystem that uses an initially empty temp file as the data source backing.
https://github.com/apache/poi/commit/e8b5f8b3af7532e09e60c258afbb706d0df4b793 I'm happy to remove this if anyone thinks there is a better way to do this.
But to resolve the problem mentioned in the stack overflow issue, we also need to make sure to use a blocksize of 4096 bytes and check other issues, e.g. to handle large byte arrays differently. I'm currently on the road but afaik there was already some temporary file used in encrypting agile, because the written amount of bytes has to be prefixed.
this was done