添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
成熟的匕首  ·  SQL ...·  1 年前    · 
礼貌的凳子  ·  c++ - ...·  1 年前    · 
稳重的蟠桃  ·  python - pip install ...·  1 年前    · 

可是导出到Excel变成了如下图的数字

通过查看poi的api 的注释发现,setCellValue如果传递的是日期的类型, 那么会把日期变为数字, 你需要在打开Excel的软件中,把日期的这一列设置单元格格式为日期的格式. 这是其中的一种解决方案.

作为Java开发工程师, 肯定要用写代码的方式来解决问题, 解决方案就是把日期类型,格式化为字符串的类型即可. 再把字符串的类型传递到setCellValue里面去.

yyyy-MM-dd 和yyyy-MM-dd HH:mm:ss的两种格式,均可以格式化为yyyy-MM-dd的形式

for (User user: listUser) {
		HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
		dataRow.createCell(0).setCellValue(user.getRealName());
		dataRow.createCell(1).setCellValue(user.getId());
		// 日期格式转为字符串输出
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String time= sdf.format(user.getTime());
		dataRow.createCell(2).setCellValue(time);
		String endTIme= sdf.format(user.getEndTime());
		dataRow.createCell(3).setCellValue(endTIme);

之后导出的效果如下

------------------------------------------------------------------------------

20200422更新 

根据下面的大神 lixumolin 的留言的地址

https://www.concretepage.com/apache-api/how-to-create-date-cell-in-xlsx-using-poi-in-java

导出时设置日期的方法可以修改为如下

 public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("导出demo");
        //设置默认的列宽为10个字符
        sheet.setDefaultColumnWidth(10);
        //设置单元格格式为日期类型
        CellStyle cellStyle = workbook.createCellStyle();
        CreationHelper createHelper = workbook.getCreationHelper();
        short dateFormat = createHelper.createDataFormat().getFormat("yyyy-MM-dd");
        cellStyle.setDataFormat(dateFormat);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
        //此处添加数据
        HSSFRow headerRow1 = sheet.createRow(0);
        headerRow1.createCell(0).setCellValue("序号");
        headerRow1.createCell(1).setCellValue("批准日期");
        HSSFRow headerRow2 = sheet.createRow(1);
        headerRow2.createCell(0).setCellValue("1");
        HSSFCell date2Cell = headerRow2.createCell(1);
        date2Cell.setCellValue(new Date());
        date2Cell.setCellStyle(cellStyle);
        //清空response
        response.reset();
        response.setContentType("multipart/form-data");
        response.setHeader("Content-Disposition",
                "attachment; filename=" + new String("导出demo".getBytes(), "iso8859-1") + ".xls");
        OutputStream os = new BufferedOutputStream(response.getOutputStream());
        workbook.write(os);
        os.flush();
        os.close();
        workbook.close();

导出的效果如下,为日期的格式, 并且自动的右对齐了 

但此方法导出的问题是,点击单元格后, 会出现时分秒. 虽然在代码中设置的是"yyyy-MM-dd"年月日的格式,但是仍旧出现了时分秒. 

希望能够有大佬能够解决此问题. 

开发环境: POI版本: 3.17 jdk 1.8在用poi导出Excel的时候,数据库字段里面存储的是如下图的yyyy-MM-dd 和yyyy-MM-dd HH:mm:ss的格式可是导出到Excel变成了如下图的数字通过查看poi的api 的注释发现,setCellValue如果传递的是日期的类型, 那么会把日期变为数字, 你需要在打开Ex...