博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java程序转换excel中科学记数法的数据为date类型
阅读量:7226 次
发布时间:2019-06-29

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

今天出于某些原因从mongodb数据库中导出了一些数据,为了更直观的发送给其他人查阅,便使用mongoVUE的导出为excel功能。
但是导出后出现了一个问题,里边有一列存储时间的,存储的是long型毫秒数,在导出后就自动变成了科学记数法。
且不说从科学记数法中辨别出实际时间,即便是原本的毫秒值也是不易于辨别的,但是这些long值不能直接在excel中转换成date类型,因此我便想到使用poi来把这些毫秒值转换成date再写入原文件中。
从mongodb中导出的excel的科学记数法如下图:
java程序如下:
package excelDemo1;import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.OutputStream;import java.text.DecimalFormat;import java.util.Date;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;/** * java读取excel文件及内容 *  * @author tuzongxun123 * */public class ExcelDemo1 {    public static void main(String[] args) {        try {            // 获取文件在磁盘的存储路径            File file = new File("C:" + File.separator + "Users"                    + File.separator + "tuzongxun123" + File.separator                    + "Desktop" + File.separator + "log.xls");            // 读文件输入流            FileInputStream fileInputStream = new FileInputStream(file);            BufferedInputStream bufferedInputStream = new BufferedInputStream(                    fileInputStream);            POIFSFileSystem excelfile = new POIFSFileSystem(bufferedInputStream);            HSSFWorkbook workbook = new HSSFWorkbook(excelfile);            // 根据名称获取excel工作薄            HSSFSheet sheet = workbook.getSheet("Sheet0");            // 遍历去除工作薄中的行和列            for (int i = 1;; i++) {                HSSFRow row = sheet.getRow(i);                if (row != null) {                    // 获取科学记数法这一列的单元格                    HSSFCell cell = row.getCell(6);                    // 格式化科学计数法的数据格式                    DecimalFormat df = new DecimalFormat("0");                    String value = df.format(cell.getNumericCellValue());                    // 时间转换                    long long1 = Long.parseLong(value);                    Date date = new Date(long1);                    // 创建新的单元格存储转换后的数据                    HSSFCell cell2 = row.createCell(9);                    cell2.setCellValue(date);                } else {                    break;                }            }            // 把转换后的数据写入到文件中            OutputStream outputStream = new FileOutputStream(file);            workbook.write(outputStream);            outputStream.close();        } catch (Exception e) {            e.printStackTrace();        }    }}
运行程序后excel中新增一列的数据如下图:
在excel中把 这一列单元格的格式设置为时间类型后,就会看到数据变成了正确的时间格式,如下图:
你可能感兴趣的文章
2017-11-28 在线编程网站对中文代码的支持
查看>>
浅谈k8s cni 插件
查看>>
AES加密算法的JAVA实现
查看>>
面试系列-高并发之synchronized
查看>>
JAVA8给我带了什么——lambda表达
查看>>
我们在编写python代码时应该注意那几件事 !
查看>>
微软工程师认为 Mozilla 也应该拥抱 Chromium
查看>>
论文笔记系列-Neural Architecture Search With Reinforcement Learning
查看>>
使用文本框TextView/EditText的开源库清单
查看>>
通过一个实际例子理解Kubernetes里pod的自动scale - 水平自动伸缩
查看>>
手把手教您将 libreoffice 移植到函数计算平台
查看>>
Ansible批量修改root密码(playbook)
查看>>
c#-WPF string,color,brush之间的转换
查看>>
镁客网每周硬科技领域投融资汇总(10.21-10.27),AI芯片创企Syntiant获英特尔等头部企业投资...
查看>>
惰性计算辨析
查看>>
单据类报表的制作
查看>>
EVCache缓存在 Spring Boot中的实战
查看>>
Kubernetes-架构路线图
查看>>
java类加载时机与过程
查看>>
Win10安装MySQL5.7.22 解压缩版(手动配置)方法
查看>>