poi 的usermodel api读取大数据量excel会导致OOM,可以使用eventmodel api来处理这种excel.
少量的行数excel可以用
XSSFWorkbook wb = new XSSFWorkbook(inputStream);
XSSFSheet sheet = wb.getSheetAt(0);
Iterator<Row> iter = sheet.iterator();
boolean isfirstline = true;
while (iter.hasNext()) {
Row row = iter.next();
if (isfirstline) { // 忽略上传文件第一行的标题栏
isfirstline = false;
continue;
}
//解析excel,每行有11列,然后对每列解析出来之后调用后端服务把数据保存到数据库中,
}
}
但是大于几十万行的时候就会出现 out of memory的错误。很简单
XSSFWorkbook wb = new XSSFWorkbook(inputStream);
导致了内存溢出。
解决方法就是可以使用eventmodel api来处理这种excel.
new ExcelEventUserModelParse(filePath)
.setHandler(new ExcelEventUserModelParse.SimpleSheetContentsHandler() {
@Override
public void endRow(int rowNum) {
// System.out.println(row.toString());
if (!isEmpty.getIsEmpty()) {
table.add(row);
} else {
isnull.setIsEmpty(isEmpty