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

今天出于某些原因从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中把 这一列单元格的格式设置为时间类型后,就会看到数据变成了正确的时间格式,如下图:

时间: 2024-11-03 20:48:33

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

Java向Excel中插入图片

Java向Excel中插入图片 import java.io.FileOutputStream; import java.io.File; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.awt.image.BufferedImage; import javax.imageio.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; im

Java处理Excel中的日期格式

Java处理Excel中的日期格式 2011-12-23 17:34:03|  分类: java |举报 |字号 订阅 下载LOFTER 我的照片书  | 在Excel中的日期格式,其数值为距离1900年1月1日的天数,比如2009-12-24将其转化为数字格式时变成了40171,在用java处理的时候,读取的也将是40171.在POI处理Excel中的日期类型的单元格时,如果仅仅是判断它是否为日期类型的话,最终会以NUMERIC类型来处理.正确的处理方法是先判断单元格的类型是否则NUMERIC

接口测试中读取excel中的请求数据含有中文问题,UnicodeEncodeError: 'latin-1' codec can't encode character '\u5c0f' in position

错误信息:UnicodeEncodeError: 'latin-1' codec can't encode character '\u5c0f' in position 31: Body ('小') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8的错误 原因:从excel中读取你的接口请求数据时带有中文时在发送求情时会出现上述错误.只需要将请求数据转化为bytes类型即可

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

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

用java将excel中数据导入mysql

java的poi技术读取Excel数据到MySQL 这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 :java的jxl技术导入Excel  项目结构: Excel中的测试数据: 数据库结构: 对应的SQL: 1 CREATE TABLE `student_info` ( 2 `id` int(11) NOT NULL AUTO_INCREMENT

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

上一篇介绍了使用Java的Robot机器人实现截图,然后将剪贴板上的数据流生成PNG图片 但是经过博主的不断测试,在完全依赖远程桌面的没有终端显示器的服务器上 使用截图方式是不可行的,因为一旦使用了远程桌面,再断开桌面,系统后台执行的截图程序会全部截到黑屏 所以博主不得已去用另一种通用方式生成PNG 这就是要使用Apache公司的POI工具,对整个excel进行解析 将excel的每一个单元格,数据,格式,边框全都读取出来 其中需要考虑到单元格的合并,行列的隐藏等等复杂的问题 最终使用JAVA

Java 为 Excel 中的行设置交替背景色

在制作Excel表格时,通过将数据表中上下相邻的两行用不同的背景色填充,可以使各行的数据看起来更清楚,避免看错行,同时也能增加Excel表格的美观度.本文将介绍如何在Java程序中为 Excel 奇数行和偶数行设置交替背景色. 使用工具:Free Spire.XLS for Java (免费版) Jar文件导入方法 方法一: 下载最新的Free Spire.XLS for Java包并解压缩,然后从lib文件夹下,将Spire.Xls.jar包导入到你的Java应用程序中.(导入成功后如下图所示

Excel中如何对数据进行简单排序

excel表格如何排序,在Excel 2013中,对数据表中的数据进行排序时,如果按照单列的内容进行简单排序,可以直接使用选项板中的"升序"选项或"降序"选项来完成.[解决方法,教程视频资料如下] 本教程视频资料来源:http://edu.51cto.com/course/15404.html 完整博客资料:http://blog.51cto.com/13172026/2292179 完整视频资料:http://edu.51cto.com/lecturer/1316

Java中Long、String、Date类型之间转换工具类

import java.text.*; import java.util.*; public class DateFormat { /** * date类型进行格式化输出 * @param date * @return */ public static String dateFormat(Date date) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateSt