gpt4 book ai didi

excel - 使用POI写入日期(不含时间)

转载 作者:行者123 更新时间:2023-12-03 00:03:38 26 4
gpt4 key购买 nike

当我使用 POI 写出日期时,我还会在 Excel 中看到时间。 (显示的时间是写入单元格时我的机器上的时间)。这是我使用过的代码

XSSFCellStyle dateStyle = wb.createCellStyle();
CreationHelper createHelper = wb.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd-mmm-yyyy"));
Calendar cal = Calendar.getInstance();
cal.set(xx.getYear(), xx.getMonthOfYear(), xx.getDayOfMonth());
cell.setCellStyle(dateStyle);
cell.setCellValue(cal);

单元格中的日期是正确的,即 2013 年 12 月 12 日,但对于该单元格,在公式栏中,还显示了时间。因此,单元格显示 12-Dec-2013,公式栏显示 12-Dec-2013 7:14:39AM。我检查了 Excel 中单元格的格式,它显示为自定义 dd-mm-yyyy,这正是我所期望的。需要明确的是 - 单元格本身显示 12-12-2012,但对于编辑栏中的该单元格,时间也显示。我还用日期替换了日历 - 同样的问题。

Addl 信息:在 Excel 中,我将 col 的格式更改为“常规” - 对于 POI 添加的单元格,我看到值是 xxx.xxx,如 41319.3769490278,而当我只是输入日期时手上的值看起来像 41319。看起来小数点后的数字导致时间显示。当我使用 POI 写出它时,不知道如何避免这种情况

最佳答案

好的解决了。将其发布给遇到同样问题的其他人。我查看了 POI 源代码,意识到从日历中计算出 double 值,并将单元格值设置为该值。从注释中可以清楚地看出,小数点后的数字代表时间。所以我在代码中所做的就是截断那个 double 。更改的行在下面的代码片段中进行了注释。

XSSFCellStyle dateStyle = wb.createCellStyle();
CreationHelper createHelper = wb.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd-mmm-yyyy"));
Calendar cal = Calendar.getInstance();
cal.set(xx.getYear(), xx.getMonthOfYear(), xx.getDayOfMonth());
cell.setCellStyle(dateStyle);
double d = DateUtil.getExcelDate(cal, false); //get double value f
cell.setCellValue((int)d); //get int value of the double

关于excel - 使用POI写入日期(不含时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com