文档章节

java程序转换excel中科学记数法的数据为date类型

涂宗勋
 涂宗勋
发布于 2016/05/12 18:00
字数 511
阅读 51
收藏 3

今天出于某些原因从mongodb数据库中导出了一些数据,为了更直观的发送给其他人查阅,便使用mongoVUE的导出为excel功能。

 

但是导出后出现了一个问题,里边有一列存储时间的,存储的是long型毫秒数,在导出后就自动变成了科学记数法。

 

且不说从科学记数法中辨别出实际时间,即便是原本的毫秒值也是不易于辨别的,但是这些long值不能直接在excel中转换成date类型,因此我便想到使用poi来把这些毫秒值转换成date再写入原文件中。

 

从mongodb中导出的excel的科学记数法如下图:

 

 

 

java程序如下:

[java] view plain copy

 在CODE上查看代码片派生到我的代码片

  1. package excelDemo1;  
  2.   
  3. import java.io.BufferedInputStream;  
  4. import java.io.File;  
  5. import java.io.FileInputStream;  
  6. import java.io.FileOutputStream;  
  7. import java.io.OutputStream;  
  8. import java.text.DecimalFormat;  
  9. import java.util.Date;  
  10. import org.apache.poi.hssf.usermodel.HSSFCell;  
  11. import org.apache.poi.hssf.usermodel.HSSFRow;  
  12. import org.apache.poi.hssf.usermodel.HSSFSheet;  
  13. import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
  14. import org.apache.poi.poifs.filesystem.POIFSFileSystem;  
  15.   
  16. /** 
  17.  * java读取excel文件及内容 
  18.  *  
  19.  * @author tuzongxun123 
  20.  * 
  21.  */  
  22. public class ExcelDemo1 {  
  23.     public static void main(String[] args) {  
  24.         try {  
  25.             // 获取文件在磁盘的存储路径  
  26.             File file = new File("C:" + File.separator + "Users"  
  27.                     + File.separator + "tuzongxun123" + File.separator  
  28.                     + "Desktop" + File.separator + "log.xls");  
  29.             // 读文件输入流  
  30.             FileInputStream fileInputStream = new FileInputStream(file);  
  31.             BufferedInputStream bufferedInputStream = new BufferedInputStream(  
  32.                     fileInputStream);  
  33.             POIFSFileSystem excelfile = new POIFSFileSystem(bufferedInputStream);  
  34.             HSSFWorkbook workbook = new HSSFWorkbook(excelfile);  
  35.             // 根据名称获取excel工作薄  
  36.             HSSFSheet sheet = workbook.getSheet("Sheet0");  
  37.             // 遍历去除工作薄中的行和列  
  38.             for (int i = 1;; i++) {  
  39.                 HSSFRow row = sheet.getRow(i);  
  40.                 if (row != null) {  
  41.                     // 获取科学记数法这一列的单元格  
  42.                     HSSFCell cell = row.getCell(6);  
  43.                     // 格式化科学计数法的数据格式  
  44.                     DecimalFormat df = new DecimalFormat("0");  
  45.                     String value = df.format(cell.getNumericCellValue());  
  46.                     // 时间转换  
  47.                     long long1 = Long.parseLong(value);  
  48.                     Date date = new Date(long1);  
  49.                     // 创建新的单元格存储转换后的数据  
  50.                     HSSFCell cell2 = row.createCell(9);  
  51.                     cell2.setCellValue(date);  
  52.                 } else {  
  53.                     break;  
  54.                 }  
  55.             }  
  56.             // 把转换后的数据写入到文件中  
  57.             OutputStream outputStream = new FileOutputStream(file);  
  58.             workbook.write(outputStream);  
  59.             outputStream.close();  
  60.         } catch (Exception e) {  
  61.             e.printStackTrace();  
  62.         }  
  63.   
  64.     }  
  65. }  


 

 

运行程序后excel中新增一列的数据如下图:

 

 

在excel中把 这一列单元格的格式设置为时间类型后,就会看到数据变成了正确的时间格式,如下图:

 

© 著作权归作者所有

共有 人打赏支持
涂宗勋
粉丝 12
博文 137
码字总数 121453
作品 0
深圳
程序员
基于 POI 封装 ExcelUtil 精简的 Excel 导入导出

注 本文是使用 org.apache.poi 进行一次简单的封装,适用于大部分 excel 导入导出功能。过程中可能会用到反射,如若有对于性能有极致强迫症的同学,看看就好。 序 由于 poi 本身只是针对于 ...

倚楼听风雨_
2017/05/22
0
22
java基于poi实现快速操作Excel的工具[v2.1.0]版本更新

Excel4J v2.x 一. v2.x新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel支持非注解读取Excel内容了,内容存于对象内 现在支持导...

Crab2Died
2017/10/28
0
1
Date对象存入mysql数据库

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。 java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识...

颜建海
2014/04/04
0
0
java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间

java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。 java.sql.Date是java.util.Date的子类,是一个包装了毫秒 值的瘦包装器,允许 JDBC 将毫秒值标识...

村长大神
2015/02/02
0
0
java和mysql之间的时间日期类型传递

mysql(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59 timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到......

为了美好的明天
2017/10/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

弹性工作制的魔咒

简评:你找到了一份完美的工作 —— 可以提前离开公司,还可以在晚上从家里回复邮件。既然如此,你为什么还会有那么强的负罪感呢? 或许是弹性工作制魔咒在作祟。 很多享受弹性工作制的人会始...

极光推送
7分钟前
0
0
KAFKA介绍(分布式架构)

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以...

明理萝
13分钟前
0
1
os::NodeHandle::subscribe回调函数绑定对象

void Foo::callback(const std_msgs::Empty::ConstPtr& message){}Foo foo_object;ros::Subscriber sub = handle.subscribe("my_topic", 1, &Foo::callback, &foo_object); 参考: ht......

itfanr
14分钟前
0
0
React16.4 开发简书项目 从零基础入门到实战

React16.4 开发简书项目 从零基础入门到实战 关注我的订阅号下载 React16.4 开发简书项目 从零基础入门到实战

蜗牛奔跑
17分钟前
0
0
day57-20180815-流利阅读笔记-待学习

社恐怎么办?这个漫画或许能治愈你 毛西 2018-08-15 1.今日导读 近日,芬兰漫画家卡罗利娜·科尔霍宁创作的绘本《芬兰人的噩梦》在中国大火。一时间书中的主人公马蒂成为了人们茶余饭后热议的...

aibinxiao
21分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部