POI解析excel日期
来源:互联网 发布:股票模拟盘软件 编辑:程序博客网 时间:2024/05/02 16:51
一.遇见的问题:
当单元格设置为日期类型时,cell.getCellStyle().getDataFormat()返回的值都为176。
poi jar包3.14以上不支持用cell.getCellType()判断类型的方法。
使用poi解析技术需要导入poi以及poi-ooxml两个jar包。
二.单元格的类型cell.getCellType():
HSSFCell.CELL_TYPE_NUMERIC:数字类型(包含日期)
CELL_TYPE_STRING:字符串
CELL_TYPE_BOOLEAN:布尔类型
CELL_TYPE_BLANK:没有值
CELL_TYPE_FORMULA:公式取值
三.单元格为自定义类型的时候,cell.getCellStyle().getDataFormat()值:
yyyy-MM-dd---->14
yyyy年m月d日--->31
yyyy年m月------>57
m月d日 -------->58
HH:mm--------->20
h时mm分 ------>32
四.最终代码:
package cn.trashman.excel;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import java.util.Date;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class PoiExcel { public static void main(String[] args) { poiExcel("D:/1.xlsx"); } @SuppressWarnings("resource") public static void poiExcel(String fileName){ boolean is2007 = true; //判断是否是excel2007格式 if(fileName.endsWith("xlsx")) is2007 = false; try { InputStream input = new FileInputStream(fileName); //建立输入流 Workbook wb = null; //根据文件格式(2003或者2007)来初始化 if(is2007) wb = new HSSFWorkbook(input); else wb = new XSSFWorkbook(input); Sheet sheet = wb.getSheetAt(0); int lastRowNum = sheet.getLastRowNum(); for (int i = 0; i <= lastRowNum; i++) { //具体到某一行 Row row = sheet.getRow(i); //单元格的数量 int lastCellNum = row.getLastCellNum(); for (int j = 0; j < lastCellNum; j++) { Cell cell = row.getCell(j); //根据cell中的类型来输出数据 switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: Object result = cell.getNumericCellValue();// // 判断单元格是否属于日期格式 // if(HSSFDateUtil.isCellDateFormatted(cell)){// //java.util.Date类型 // result = cell.getDateCellValue();// } short format = cell.getCellStyle().getDataFormat(); SimpleDateFormat sdf = null; if(format != 0){// format == 176时是当指定单元格格式为日期是都是176 if(format == 14 || format == 31 || format == 57 || format == 58||format == 176){ //日期 sdf = new SimpleDateFormat("yyyy-MM-dd"); }else if (format == 20 || format == 32) { //时间 sdf = new SimpleDateFormat("HH:mm"); } double value = cell.getNumericCellValue(); Date date = DateUtil.getJavaDate(value); result = sdf.format(date); } System.out.println(result); break; case HSSFCell.CELL_TYPE_STRING: System.out.println(cell.getStringCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; case HSSFCell.CELL_TYPE_BLANK: System.out.println("为空"); break; default: System.out.println("unsuported sell type"); break; } } System.out.println(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
阅读全文
0 0
- POI解析excel日期
- poi解析Excel,格式化日期类型
- poi解析excel读取日期为数字的问题
- 用POI上传EXCEL表格 日期解析问题
- POI解析Excel
- POI 解析Excel
- 使用poi解析Excel
- 使用poi解析Excel
- 使用poi解析Excel
- 使用poi解析Excel
- java poi 解析excel
- POI解析Excel
- 《POI解析复杂Excel》
- poi 解析excel
- 使用poi解析Excel
- 使用poi解析Excel
- apache poi解析excel
- POI解析Excel文档
- spring容器启动的三种方式
- 微信小程序开发之录音机 音频播放 动画 (真机可用)
- JSP 自动刷新
- java 线程池ThreadPoolExecutor
- 针对innodb_flush_method参数的理解和对比测试(mycat+mysql)
- POI解析excel日期
- 黑客新手工具系列集合附链接
- redis-JedisPoolConfig配置
- java面试之继承和组合的区别
- js比较详细的date之间的相互转换
- PeerConnection中的Channel相关类图及创建过程
- nyoj-10skiing
- 新装Debian后遇到的一些小问题总结
- vue.js 之将填空转化为下划线