最近用XSSFWorkbook
做Excel导出时遇到了一个问题:当数据达到几万行会出现java.lang.OutOfMemoryError: GC overhead limit exceeded
错误。
解决办法:
SXSSF(包:org.apache.poi.xssf.streaming)是XSSF的API兼容流式扩展,用于在必须生成非常大的电子表格时使用,并且堆空间有限。SXSSF通过限制对滑动窗口内行的访问来实现其低内存占用,而XSSF允许访问文档中的所有行。不再在窗口中的旧行变得不可访问,因为它们被写入磁盘。
详细介绍请查看:http://poi.apache.org/components/spreadsheet/how-to.html#sxssf
测试类:
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* SXSSFWorkbook测试
*
* @author 王晓安
*/
public class SXSSFWorkbookTest {
private