我编写的这个解析工具类有做单元格为空补全的功能,指定解析几个sheet页(有些Excel有隐藏的sheet页是不需要解析的)
调用代码:
XxsAnalysisImportExcel xxs = new XxsAnalysisImportExcel();
List<List<Map<String, Object>>> sheetData = new ArrayList<List<Map<String,Object>>>();
xxs.process(inputStream, sheetData,3);
//获取到解析的每个sheet页数据
List<Map<String, Object>> sheet0 = sheetData.get(0);
ObjectMapper map = new ObjectMapper();
//转换成业务VO
List baseInfo = map.convertValue(sheet0, new TypeReference<List>() {});
工具类:XxsAnalysisImportExcel.java
package com.qizhidao.ecloud.common.utils;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xssf.eventusermodel.XSSFReader;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
import java.io.InputStream;
import java.util.*;
/**
-
导入Excel解析
-
@author tanle
-
@since 2019年3月1日
*/
public class XxsAnalysisImportExcel extends DefaultHandler{private Integer sheetIndex = 0;
private Integer curRow = 0;
private Integer curCol = 0;
//当前位置
private Integer preRef = 0;private boolean nextIsString = false;
private String lastContents