zoukankan      html  css  js  c++  java
  • 对poi-Excel导入的浅层理解

    本文即将对POI方式导入excel文件最核心的步骤予以说明,为的是简单,也是为了阐明文件导入的原理.

    文件导入有一个很明显的线索:

    1.首先是我们知道硬盘中的文件,即:文件对象File file

    2.然后通过文件对象file  ,我们可以获取它的路径String filePath = file.getAbsolutePath()

    3.根据filePath,我们可以创建一条文件输入流:FileInputStream fis = new FileInputStream(filePath),这条流就像一条连接硬盘到内存的单向河流,把excel文件流到了内存中,但是得有东西接收才行呀,别慌,有Workbook容器

    4.Workbook book = new XSSFWorkbook(fis)(注意,如果是xls的excel文件,要用HSSFWorkbook去接收,所谓什么岁数的人穿什么样式的衣裳)

    5.得到了workbook,就相当于得到了整个excel文件,但是它还是冰冻的,需要我们进一步给它化冻,才能看清其真面目,接下来就有意思了,一层层剥开

    6.首先是通过workbook获取其中的一个工作簿sheet,workbook.getSheetAt(0)//0表示第一个

    7.获取了工作簿,里面还有行,列,那么我们是先获取行,还是先获取列呢,规定是这样的顺序:工作簿--->行Row--->列cell,注意这里的列不是column,而是cell,表示比row低一级别

    看这里:

      通过工作簿获取行:Row row = sheet.getRow(0);//这是获取第一行

      通过行获取单元格:row.getCell(0);//这是获取该行的第一个单元格

    8.如果我们像获取其他信息,比如行数,列数,格式怎么办?也有妙招:

      获取行数,是通过sheet.getLastRowNum()

      获取列数,是通过获取任意行,然后获取该行的单元格数来间接得到的,如row.getPhysicalNumberOfCells()

    9.有没有发现:从硬盘的文件到内存中操作单元格,它们之间好像有一种严格的层级关系,会了这种关系,再也不会忘记文件导入怎么搞了:

      文件对象/文件路径/输入流/工作表/工作簿/行/单元格

    你记住了吗?



    注:上面只是简单的表达文件导入的原理,还有一些细节,等待大家挖掘,比如处理异常,对xls和xlsx的不同处理,对单元格String和Number类型格式的处理,大家若遇到问题可百度,因为都是小问题
  • 相关阅读:
    PHP 使用 header()实现重定向
    PHP抑制符号 @
    PHP自动加载spl_autoload_register
    打开PHP错误提示
    通过htaccess使用伪静态
    用反引号(``)标注表明或者字段名,防止跟 mysql关键字冲突
    Bootstrap 弹出框(Popover)插件
    jQuery 的 validator 验证,以及添加自定义验证规则。
    线程与并发(一) 多线程基础
    SpringCloud入门
  • 原文地址:https://www.cnblogs.com/wangxuejian/p/10415909.html
Copyright © 2011-2022 走看看