今天出于某些原因从mongodb数据库中导出了一些数据,为了更直观的发送给其他人查阅,便使用mongoVUE的导出为excel功能。
 
但是导出后出现了一个问题,里边有一列存储时间的,存储的是long型毫秒数,在导出后就自动变成了科学记数法。
 
且不说从科学记数法中辨别出实际时间,即便是原本的毫秒值也是不易于辨别的,但是这些long值不能直接在excel中转换成date类型,因此我便想到使用poi来把这些毫秒值转换成date再写入原文件中。
 
从mongodb中导出的excel的科学记数法如下图:
 
 
 
java程序如下:
  1. package excelDemo1;
  2. import java.io.BufferedInputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.OutputStream;
  7. import java.text.DecimalFormat;
  8. import java.util.Date;
  9. import org.apache.poi.hssf.usermodel.HSSFCell;
  10. import org.apache.poi.hssf.usermodel.HSSFRow;
  11. import org.apache.poi.hssf.usermodel.HSSFSheet;
  12. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  13. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  14. /**
  15. * java读取excel文件及内容
  16. *
  17. * @author tuzongxun123
  18. *
  19. */
  20. public class ExcelDemo1 {
  21. public static void main(String[] args) {
  22. try {
  23. // 获取文件在磁盘的存储路径
  24. File file = new File("C:" + File.separator + "Users"
  25. + File.separator + "tuzongxun123" + File.separator
  26. + "Desktop" + File.separator + "log.xls");
  27. // 读文件输入流
  28. FileInputStream fileInputStream = new FileInputStream(file);
  29. BufferedInputStream bufferedInputStream = new BufferedInputStream(
  30. fileInputStream);
  31. POIFSFileSystem excelfile = new POIFSFileSystem(bufferedInputStream);
  32. HSSFWorkbook workbook = new HSSFWorkbook(excelfile);
  33. // 根据名称获取excel工作薄
  34. HSSFSheet sheet = workbook.getSheet("Sheet0");
  35. // 遍历去除工作薄中的行和列
  36. for (int i = 1;; i++) {
  37. HSSFRow row = sheet.getRow(i);
  38. if (row != null) {
  39. // 获取科学记数法这一列的单元格
  40. HSSFCell cell = row.getCell(6);
  41. // 格式化科学计数法的数据格式
  42. DecimalFormat df = new DecimalFormat("0");
  43. String value = df.format(cell.getNumericCellValue());
  44. // 时间转换
  45. long long1 = Long.parseLong(value);
  46. Date date = new Date(long1);
  47. // 创建新的单元格存储转换后的数据
  48. HSSFCell cell2 = row.createCell(9);
  49. cell2.setCellValue(date);
  50. } else {
  51. break;
  52. }
  53. }
  54. // 把转换后的数据写入到文件中
  55. OutputStream outputStream = new FileOutputStream(file);
  56. workbook.write(outputStream);
  57. outputStream.close();
  58. } catch (Exception e) {
  59. e.printStackTrace();
  60. }
  61. }
  62. }
 
运行程序后excel中新增一列的数据如下图:
 

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

java程序转换excel中科学记数法的数据为date类型的更多相关文章

  1. JAVA将Excel中的报表导出为图片格式(一)问题背景

    如题所示,先抛出一个问题,如何使用JAVA将Excel中的报表导出为图片格式? 首先说一下这个问题的背景,也就是为什么博主会碰到这个问题 随着微信,易信之流大行其道,企业内部的办公交流.绩效考评甚至考 ...

  2. 转:Java修改Excel单元格的数据及格式

    https://blog.csdn.net/aking21alinjuju/article/details/6001153?locationNum=2 继前两节的Java读取.写入Excel后,本期将 ...

  3. 将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件

    Python 一大重要的功能,就是可处理大量数据,那分不开的即是使用Excel表格了,这里我做下学习之后的总结,望对我,及广大同仁们是一个帮助Python处理Excel数据需要用到2个库:xlwt 和 ...

  4. Java处理Excel中的日期格式

    Java处理Excel中的日期格式 2011-12-23 17:34:03|  分类: java |举报 |字号 订阅 下载LOFTER 我的照片书  |   在Excel中的日期格式,其数值为距离1 ...

  5. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

  6. Mysql一个非常有用的内置函数今天碰到要把MySQL数据库中的varchar转换成date类型进

    Mysql一个非常有用的内置函数 今天碰到要把MySQL数据库中的varchar转换成date类型进行时间的比较和查询.在网上找了找,发现MySQL也跟其他数据库一样有自己内置的转换函数:str_to ...

  7. JAVA将Excel中的报表导出为图片格式(三)换一种实现

    上一篇介绍了使用Java的Robot机器人实现截图,然后将剪贴板上的数据流生成PNG图片 但是经过博主的不断测试,在完全依赖远程桌面的没有终端显示器的服务器上 使用截图方式是不可行的,因为一旦使用了远 ...

  8. Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  9. Java将Excel中科学计数法解析成数字

    需要注意的是一般的科学表达式是1.8E12 1.8E-12 而在Excel中的科学表达式是1.8E+12 1.8E-12 我写的科学计数法的正则表达式是(-?\d+\.?\d*)[Ee]{1}[\+- ...

随机推荐

  1. grep 命令操作

    linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...

  2. WP8 MediaElement 实现循环播放

    很简单, 直接在MediaEnded事件里加Play()即可

  3. Implement Trie (Prefix Tree)

    Trie 树实现 Implement a trie with insert, search, and startsWith methods. class TrieNode { public: // I ...

  4. js常用的封装函数

    1.使用childNodes获取元素的元素节点 //使用childNodes获取元素节点 function cNodes(obj){ var arr=new Array(); for(var i=0; ...

  5. Atom 安装 Packages 的笨办法

    在终端里输入下面的命令打开 Atom 的 packages 的安装目录. open ~/.atom/packages 然后找到需要安装的 Atom packages ,比如我需要安装的这个 atom- ...

  6. 解决Oracle在scott用户下创建视图(VIEW)权限不足的方法

    问题描述:在scott用户下创建视图的时候,报错:权限不足.(其他用户以此类推)解决方法: 以dba用户登录 sqlplus / as sysdba 赋予scott用户创建VIEW的权限 grant  ...

  7. Android深度探索HAL和驱动开发(卷1) 第一章 Android系统移植和驱动开发

    由于Android是基于Linux内核的,因此,Android和其他Linux系统的核心部分差异非常小.然而不同版本的Android使用的Linux内核的版本有细微的差异,所以不同Android驱动可 ...

  8. Examples of complexity pattern

    O(1):constant - the operation doesn't depend on the size of its input, e.g. adding a node to the tai ...

  9. 3.基础点的移动web

    1.移动端的屏幕适配 在Web开发中可以使用px(像素).em.pt(点).in(英寸).cm(厘米)做为长度单位,我们最常用px(像素)做为长度单位. 我们可以将上述的几种长度单位划分成相对长度单位 ...

  10. centos安装sublime

    在官网下载,tarball    下载链接        http://www.sublimetext.com/3 提示信息:  Ubuntu 64 bit - also available as a ...