java - 我可以将 Java 中的日期作为 TYPED INTO excel 单元格获取吗?

标签 java excel apache-poi

我有一个使用 apache-poi 3.17 读取和编辑 xlsx 工作簿的 java 程序。我正在尝试读取日期,格式很重要。我需要制作工作簿的人输入的原始日期。我研究了很多,发现日期在 Excel 中存储为整数,十进制数字是时间。例如,一个人输入“1/1/1947”,Excel 将其在内部存储为“17168”,然后在单元格中显示为“01-Jan-47”。我无法更改原始工作簿。有没有办法获得在 java 程序中使用 apache poi 时输入的原始“1947 年 1 月 1 日”?当我做:
Cell cell = row.getCell(cellColumn, MissingCellPolicy.CREATE_NULL_AS_BLANK); String value = dataFormatter.formatCellValue(cell);
该值作为显示值“01-Jan-47”出来。当我做:
Cell cell = row.getCell(cellColumn, MissingCellPolicy.CREATE_NULL_AS_BLANK); cell.setCellType(CellType.STRING); String value = cell.getStringCellValue();
我得到内部值“17168”。有谁知道如何(或者如果可能的话)获取原始输入值?它肯定存储在 Excel 工作簿中,因为它会在您单击单元格时显示。或者,如果我在 Eclipse 中调试程序并单击上面显示的单元格对象,日期以显示格式显示,但它具有完整的 4 位数年份; “1947 年 1 月 1 日”。如果原始格式不可能,我也可以使用它,所以如果有人知道如何将它转换为字符串,它也会有所帮助。谢谢。

最佳答案

(跟进评论)

基于此代码,您包括:

Cell cell = row.getCell(cellColumn, MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
String value = cell.getStringCellValue();

下面是一个函数示例,它可以返回一个经过处理的 String 值来表示您正在寻找的目标:
private static String returnOrig(String value) {

   String mth;
   String[] parts = value.split("-");
   String day = parts[0];

   if (day.substring(0,1).equals("0")) {
       day = day.substring(1,2);
   } 

   switch(parts[1]) {
       case "Jan": mth = "1"; break;
       case "Feb": mth = "2"; break;
       case "Mar": mth = "3"; break;
       case "Apr": mth = "4"; break;
       case "May": mth = "5"; break;
       case "Jun": mth = "6"; break;
       case "Jul": mth = "7"; break;
       case "Aug": mth = "8"; break;
       case "Sep": mth = "9"; break;
       case "Oct": mth = "10"; break;
       case "Nov": mth = "11"; break;
       case "Dec": mth = "12"; break;
       default: mth = "0";
   }

   String original = mth + "/" + day + "/" + parts[2];

   return original;
 }

返回:

"1/1/47"

关于java - 我可以将 Java 中的日期作为 TYPED INTO excel 单元格获取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54095340/

相关文章:

java - 在java中绘制两个不同位置和颜色的圆圈

c# - 如何遍历 Excel 工作表仅从特定列中提取数据

java - 使用Java从Excel中读取日期字段

java - 如何使用 Apache POI 列出 Microsoft Office 文档中的所有嵌入文件?

java - 使用 Apache-POI 从 excel 文件中搜索记录的有效方法

c# - 寻找需要多个接口(interface)继承(而不是实现)的示例/案例

java - onListItemClick 方法不起作用

java - 在 CentOS 6.5 中更改主机名的 "correct"方法是什么? (以及/etc/hosts和/etc/sysconfig/network脚本的区别)

VBA 将 msoThemeColor 存储在变量中

Excel CurrentProject.Path,运行时错误 424