博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Poi解析Excel
阅读量:5907 次
发布时间:2019-06-19

本文共 3461 字,大约阅读时间需要 11 分钟。

Poi解析Excel

POI   jar下载地址:

  SSF是POI工程对Excel 97(-2007)文件操作的纯Java实现

  XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现

  从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API----SXSSF

Poi包里有4个主要的类,包括:

Workbook------工作表,通过WorkbookFactory的create(FileInputStream fis)方法获取,

Sheet------------表格,Workbook实例的getSheetAt(int num)方法获取,

Row--------------行,Sheet实例的getRow(int num)方法获取,

Cell--------------单元格,Row实例的getCell(int num)方法获取,

最后通过Cell实例根据数据类型调用对应的方法获取单元格的值。

下面是我做的一个实例。

excel文件内容:包含字符串、日期、数值、公式等数值类型

java代码

public class Poi {                private Sheet sheet;    //表格类实例      LinkedList[] result;    //保存每个单元格的数据 ,使用的是一种链表数组的结构        //读取excel文件,创建表格实例      private void loadExcel(String filePath) {          FileInputStream inStream = null;          try {              inStream = new FileInputStream(new File(filePath));              Workbook workBook = WorkbookFactory.create(inStream);                           sheet = workBook.getSheetAt(0);                   } catch (Exception e) {              e.printStackTrace();          }finally{              try {                  if(inStream!=null){                      inStream.close();                  }                              } catch (IOException e) {                                  e.printStackTrace();              }          }      }      //获取单元格的值      private String getCellValue(Cell cell) {          String cellValue = "";          DataFormatter formatter = new DataFormatter();          if (cell != null) {              //判断单元格数据的类型,不同类型调用不同的方法              switch (cell.getCellType()) {                  //数值类型                  case Cell.CELL_TYPE_NUMERIC:                      //进一步判断 ,单元格格式是日期格式                       if (DateUtil.isCellDateFormatted(cell)) {                          cellValue = formatter.formatCellValue(cell);                      } else {                          //数值                          double value = cell.getNumericCellValue();                          int intValue = (int) value;                          cellValue = value - intValue == 0 ? String.valueOf(intValue) : String.valueOf(value);                      }                      break;                  case Cell.CELL_TYPE_STRING:                      cellValue = cell.getStringCellValue();                      break;                  case Cell.CELL_TYPE_BOOLEAN:                      cellValue = String.valueOf(cell.getBooleanCellValue());                      break;                      //判断单元格是公式格式,需要做一种特殊处理来得到相应的值                  case Cell.CELL_TYPE_FORMULA:{                      try{                          cellValue = String.valueOf(cell.getNumericCellValue());                      }catch(IllegalStateException e){                          cellValue = String.valueOf(cell.getRichStringCellValue());                      }                                        }                      break;                  case Cell.CELL_TYPE_BLANK:                      cellValue = "";                      break;                  case Cell.CELL_TYPE_ERROR:                      cellValue = "";                      break;                  default:                      cellValue = cell.toString().trim();                      break;              }          }          return cellValue.trim();      }            //初始化表格中的每一行,并得到每一个单元格的值      public  void init(){          int rowNum = sheet.getLastRowNum() + 1;          result = new LinkedList[rowNum];          for(int i=0;i

 

转载于:https://www.cnblogs.com/kuoAT/p/6876015.html

你可能感兴趣的文章
【学习随笔】由UFT脚本语言对VBS中Sub与Function简单区别
查看>>
ExtJS入门之事件(fireEvent)
查看>>
simpledateformat格式中年月日为什么大小写不同
查看>>
Heron —— 核心组件学习
查看>>
Java:String和Date、Timestamp之间的转换
查看>>
Linux运维之网络运维
查看>>
nginx 负载均衡配置
查看>>
pjsip for iOS
查看>>
mysql主从同步设置
查看>>
[置顶] jQuery:用方向键控制层的移动
查看>>
spring 国际化
查看>>
注册一年
查看>>
nginx实现网关解决跨域问题(大型网关接口系统)
查看>>
XenDesktop4系统管理教程
查看>>
black berry上向RecordStore中的增删改查
查看>>
window.showModelessDialog 兼容性,及easyUI 模态框
查看>>
优秀程序员的十个习惯
查看>>
院内感染介绍
查看>>
jQuery中ready与load事件
查看>>
OAuth2FeignRequestInterceptor不支持服务注册和发现?
查看>>