使用 apache poi 输入时间

我已经使用 Apahe POI 将时间输入到 excel 文件中,如下所示


Time time = Time.valueOf("19:30:00");

CellStyle cellStyle1 = workbook.createCellStyle();

CreationHelper createHelper1 = workbook.getCreationHelper();

cellStyle1.setDataFormat(

        createHelper.createDataFormat().getFormat("HH:MM AM/PM"));

cell = row.getCell(1);

System.out.println(time.toString());

cell.setCellValue(time);

cell.setCellStyle(cellStyle1);

这导致了预期的 excel 但是有以下不匹配发现 excel 的实际值和显示值不同 - 我怎样才能使它们相同,我是否使用不正确的方式更新 Excel 时间格式的值

http://img1.mukewang.com/615430c10001dfc105190134.jpg

蓝山帝景
浏览 242回答 2
2回答

慕容森

在Excel 中,日期和时间存储为浮点数,即自01/01/1900午夜以来的天数。如果您将存储一些小于1.0- 的值,它将被解释为时间,否则为日期,例如:0.5 将等于 12:00:005.5 将等于 05.01.1900  12:00:00要正确处理日期和时间,请使用org.apache.poi.ss.usermodel.DateUtil,例如您的示例可能如下所示:    double time = DateUtil.convertTime("19:30:00");    CellStyle cellStyle = workbook.createCellStyle();    cellStyle.setDataFormat(            workbook.createDataFormat().getFormat("HH:MM AM/PM"));    cell.setCellValue(time);    cell.setCellStyle(cellStyle);结果Excel将如下所示:假设问题与上述内容有关,Excel 中的实际日期/时间值应为双精度值,而表示值应基于您设置的样式/模式;假设目标是实现这种相似性,即19:30:00在公式和07:30 PM单元格中。如果没有并且目标是07:30 PM在两种情况下都有 - 那么您只需要存储一个字符串值,而不是日期/时间。

慕标琳琳

我使用来自 Office 365 ProPlus 的 POI 3.17 和 Excel 和瑞典语语言环境。我在您的代码中添加了几行(用于创建工作簿和工作表等)。下面的代码工作正常。在单元格中我得到“07:30 PM”和在公式栏中“1970-01-01 19:30:00”。如果在运行我的代码(使用 POI 3.17)时没有得到类似的结果,我的猜测是您的 Excel 有点奇怪。public void createExcelFile() {    XSSFWorkbook workbook = new XSSFWorkbook();    Time time = Time.valueOf("19:30:00");    CellStyle cellStyle1 = workbook.createCellStyle();    CreationHelper createHelper1 = workbook.getCreationHelper();    cellStyle1.setDataFormat(createHelper1.createDataFormat().getFormat("HH:MM AM/PM"));    Sheet sheet = workbook.createSheet("Sheet");    Row row = sheet.createRow(0);    Cell cell = row.createCell(1);    System.out.println(time.toString());    cell.setCellValue(time);    cell.setCellStyle(cellStyle1);    try {        FileOutputStream outputStream = new FileOutputStream("C:/temp/file.xlsx");        workbook.write(outputStream);        workbook.close();    } catch (FileNotFoundException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java