poi 导入Excle

Posted javalin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poi 导入Excle相关的知识,希望对你有一定的参考价值。

一,AOP 是什么

Apache POI 提供java 程序对Microsoft Office格式文档的读写功能操作

 

二,所需要的jar包

技术分享图片

 

三,实现代码

 1, 读取Excle 返回Workbook格式

  //读取excel
    public static Workbook readExcel(String filePath) {
        Workbook wb = null;
        if (filePath == null) {
            return null;
        }
        String extString = filePath.substring(filePath.lastIndexOf("."));
        InputStream is = null;
        try {
            is = new FileInputStream(filePath);    //获取文件流
            if (".xls".equals(extString)) {
                return wb = new HSSFWorkbook(is);   //将文件留转换成相对的Excle 模板    , 2003版本
            } else if (".xlsx".equals(extString)) {
                return wb = new XSSFWorkbook(is); //将文件留转换成相对的Excle 模板       2007版本
            } else {
                return wb = null;
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return wb;
    }

2, 接下来就是要对获取到的workbook 类型进行再一次数据获取

Workbook :Exlce 模板

Sheet :工作簿

Row : 行数据

Cell : 列数据

  public static  void  getExcle(String path){
        Workbook wb=null; //获取Excle
        Sheet sheet = null; //获取Excle 中的工作簿
        Row row = null; //获工作簿中行数据

        wb = readExcel(path);  //获取Excle
        sheet = wb.getSheetAt(0);//获取第一个工作簿
        int rownum =sheet.getPhysicalNumberOfRows();  //获取最大行数
        for(int i=0 ; i<rownum ;i++){  //循环遍历 数据
            row = sheet.getRow(i); //获取当前行数据
            System.out.println("第一列:"+row.getCell(1)+"---第二列"+row.getCell(2));
        }
    }

优化代码

 public static Map getIncident(String filePath) {
        Workbook wb = null;
        Sheet sheet = null;
        Row row = null;
        List<Map<String, String>> list = null;
        Map<String, String> map = new LinkedHashMap<String, String>();//存放Excle表格内容
        wb = readExcel(filePath);
        if (wb != null) {
            //用来存放表中数据
            list = new ArrayList<Map<String, String>>();
            //获取第一个sheet
            sheet = wb.getSheetAt(0);
            //获取最大行数
            int rownum = sheet.getPhysicalNumberOfRows();
            //获取第一行
            row = sheet.getRow(0);
            //获取最大列数
            int colnum = row.getPhysicalNumberOfCells();
            for (int i = 0; i < rownum; i++) {
                row = sheet.getRow(i);
                if (row != null) {
                    map.put((String) getCellFormatValue(row.getCell(0)), (String) getCellFormatValue(row.getCell(1)));
                } else {
                    break;
                }
            }
        }

        return map;
    /*//遍历解析出来的list
        for (Map.Entry<String,String> entry : map.entrySet()) {
            System.out.print(entry.getKey()+":"+entry.getValue()+",");
        }*/
    }

 

以上是关于poi 导入Excle的主要内容,如果未能解决你的问题,请参考以下文章

POI实现大数据EXCLE导入导出,解决内存溢出问题

org.apache.poi3.1.7 Excle并发批量导入导出

SpringBoot导入excle文件数据

导入excle ,并处理数据实现文字和图片相对应

JAVA操作Excle之Poi批量导出Excle数据

有关java通过poi处理excle中合并单元格的问题