Excel百万数据的读取
Posted lovoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel百万数据的读取相关的知识,希望对你有一定的参考价值。
一、定义一个数据处理的Handler
/**
* 百万数据读取处理
* @Package com.wys.hrm.common.utils.poi
* @Author charlin
* @Version: v1.0
* @Date 2021-08-279:24
* @Copyright: 2021 www.wyscha.com Inc. All rights reserved.
*/
public class SheetHandler implements XSSFSheetXMLHandler.SheetContentsHandler {
private PoiEntity poiEntity;
/**
* 当开始解析某一行时触发
* @param i 行的索引
*/
@Override
public void startRow(int i) {
if(i > 0){
poiEntity = new PoiEntity();
}
}
/**
* 当结束某一行时触发
* @param i
*/
@Override
public void endRow(int i) {
//可以实现保存到数据库的业务逻辑
System.out.println(poiEntity);
}
/**
* 对行中的每一个表格进行处理
* @param cellName 单元格名称
* @param value 单元格值
* @param xssfComment 批注
*/
@Override
public void cell(String cellName, String value, XSSFComment xssfComment) {
if(poiEntity != null){
String pref = cellName.substring(0, 1);
switch (pref){
case "A":
poiEntity.setId(value);
break;
case "B":
poiEntity.setBreast(value);
break;
case "C":
poiEntity.setAdipocytes(value);
break;
case "D":
poiEntity.setNegative(value);
break;
case "E":
poiEntity.setStaining(value);
break;
case "F":
poiEntity.setSupportive(value);
break;
default:
break;
}
}
}
}
百万数据导入测试实体类,每个字段表示列的主题
@Data
public class PoiEntity {
private String id;
private String breast;
private String adipocytes;
private String negative;
private String staining;
private String supportive;
}
二、导入方法实现
/**
* 百万数据读取导入
* @Package com.wys.hrm.common.utils.poi
* @Author charlin
* @Version: v1.0
* @Date 2021-08-279:51
* @Copyright: 2021 www.wyscha.com Inc. All rights reserved.
*/
public class ExcelBigDataImportUtil {
public static void main(String[] args) {
try {
importExcel("E:\\\\project\\\\my\\\\java\\\\wyshrm\\\\file\\\\excel\\\\demo.xlsx");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void importExcel(String url) throws Exception {
//1、根据excel获取OpcPackage 压缩包
OPCPackage opcPackage = OPCPackage.open(url, PackageAccess.READ);
//2、创建XSSReader
XSSFBReader reader = new XSSFBReader(opcPackage);
//3、获取SharedStringTable
SharedStringsTable sharedStringsTable = reader.getSharedStringsTable();
//4、获取
StylesTable stylesTable = reader.getStylesTable();
//5、创建xmlreader
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
//6、注册事件
XSSFSheetXMLHandler xmlHandler = new XSSFSheetXMLHandler(stylesTable, sharedStringsTable, new SheetHandler(), false);
xmlReader.setContentHandler(xmlHandler);
//7、逐行读取
XSSFReader.SheetIterator sheetIterator = (XSSFReader.SheetIterator) reader.getSheetsData();
while (sheetIterator.hasNext()){
InputStream inputStream = sheetIterator.next();
InputSource inputSource = new InputSource(inputStream);
//8、解析数据
xmlReader.parse(inputSource);
}
}
}
以上是关于Excel百万数据的读取的主要内容,如果未能解决你的问题,请参考以下文章