您没有提及是否需要修改电子表格。
这也许很明显,但是如果您不需要修改电子表格,那么就不需要解析它并将其写回去,您可以简单地从文件中读取字节并写出字节,就像使用,例如图片或其他任何二进制格式。
如果确实需要在将电子表格发送给用户之前进行修改,那么据我所知,您可能必须采用其他方法。
我知道的用于读取Java中Excel文件的每个库都会将整个电子表格读取到内存中,因此,对于每个可能要同时处理的电子表格,您必须拥有50MB的可用内存。正如其他人指出的那样,这涉及调整VM可用的堆。
如果您需要同时处理大量电子表格,并且不能分配足够的内存,请考虑使用可以流式传输的格式,而不是一次将所有内容读取到内存中。可以通过Excel打开CSV格式,过去,通过将内容类型设置为application
/ vnd.ms-excel,将附件文件名设置为以“
.xls”结尾的文件,但实际上返回了CSV,我取得了很好的效果内容。我已经两年没有尝试过了,所以YMMV。



