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百万数据的读取的主要内容,如果未能解决你的问题,请参考以下文章

Excel百万数据的读取

利用POI操作Excel实现百万数据写入

生成器来解决大文件读取,大数据下载

怎么用java程序把excel导入到mysql数据库

easyexcel大数据量(百万数据),写入到excel

如何高效的导出 百万级别的数据量 到 Excel?