ecxcle 对于日期的处理
来源:互联网 发布:航天信息a6软件 编辑:程序博客网 时间:2024/05/22 10:34
Excel数据处理:
Excel存储日期、时间均以数值类型进行存储,读取时POI先判断是是否是数值类型,再进行判断转化
1、数值格式(CELL_TYPE_NUMERIC):
1.纯数值格式:getNumericCellValue() 直接获取数据
2.日期格式:处理yyyy-MM-dd, d/m/yyyy h:mm, HH:mm 等不含文字的日期格式
1).判断是否是日期格式:HSSFDateUtil.isCellDateFormatted(cell)
2).判断是日期或者时间
cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")
OR:cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("yyyy-MM-dd")
3.自定义日期格式:处理yyyy年m月d日,h时mm分,yyyy年m月等含文字的日期格式
判断cell.getCellStyle().getDataFormat()值,解析数值格式
yyyy年m月d日----->31
m月d日---->58
h时mm分--->32
2、字符格式(CELL_TYPE_STRING):直接获取内容
//对取得的列中的数据类型进行判断public String getCellValue(HSSFCell cell) { String cellValue = ""; DecimalFormat df = new DecimalFormat("#"); switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: cellValue = cell.getRichStringCellValue().getString().trim(); break; case HSSFCell.CELL_TYPE_NUMERIC: if(HSSFDateUtil.isCellDateFormatted(cell)) { //处理日期格式、时间格式 SimpleDateFormat sdf=null; if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) { sdf = new SimpleDateFormat("HH:mm"); } else {// 日期 sdf = new SimpleDateFormat("yyyy-MM-dd"); } Date date = cell.getDateCellValue(); cellValue=sdf.format(date); }else if(cell.getCellStyle().getDataFormat()==58) { //处理 自定义日期格式,m月m日(通过判断单元格的格式解决,id值是58 ) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); double value = cell.getNumericCellValue(); Date date = org.apache.poi.ss.usermodel.DateUtil .getJavaDate(value); cellValue=sdf.format(date); }else { cellValue = df.format(cell.getNumericCellValue()).toString(); } break; case HSSFCell.CELL_TYPE_BOOLEAN: cellValue = String.valueOf(cell.getBooleanCellValue()).trim(); break; case HSSFCell.CELL_TYPE_FORMULA: cellValue = cell.getCellFormula(); break; default: cellValue = ""; } return cellValue.toString(); }
*万能处理方案:
所有日期格式都可以通过getDataFormat()值来判断
yyyy-MM-dd-----14
yyyy年m月d日--- 31
yyyy年m月-------57
m月d日 ----------58
HH:mm-----------20
h时mm分 -------32
//1、判断是否是数值格式 if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){ short format = cell.getCellStyle().getDataFormat(); SimpleDateFormat sdf = null; if(format == 14 || format == 31 || format == 57 || format == 58){ //日期 sdf = new SimpleDateFormat("yyyy-MM-dd"); }else if (format == 20 || format == 32) { //时间 sdf = new SimpleDateFormat("HH:mm"); } double value = cell.getNumericCellValue(); Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value); result = sdf.format(date); }
- ecxcle 对于日期的处理
- SQL对于日期的处理
- unix里对于日期的处理
- java中对于日期的处理
- Play1.x对于日期类型数据的请求和处理
- 对于压缩文件的处理
- 对于事件的处理
- 对于权限的处理
- 对于时间的处理
- 九、对于日期的处理,同样也是frame进行切换的过程
- spring mvc表单数据绑定,对于基本类型和日期的处理WebDataBinder
- spring mvc表单数据绑定,对于基本类型和日期的处理WebDataBinder
- xpath 对于 comments的处理
- Oracle对于天数的处理
- IE对于空格的处理
- svn对于大小写的处理
- 对于图片处理的分析
- HPUX对于pthread_kill的处理
- 机器学习
- 二进制文件编译器汇总
- 判断Activity是否在前台显示
- MFC选择文件夹的对话框
- Linux下php安装Redis扩展
- ecxcle 对于日期的处理
- leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal 中前序构造BST
- Solr schema.xml配置详解
- 共用体
- Vim命令合集
- ehcache 分布式缓存
- android Toast 详解
- JTAG和ULINK、JLINK、ST-LINK
- java 线程