Excel单元格样式问题

2023-12-11

我使用下面的代码从 XLSX 文件中获取日期值。这对于某些 XLSX 文件来说工作得非常好,但它没有给出 XLSX 文件中的确切日期格式。此问题针对某些文件。

例如,我有这样的约会21/01/2016 (dd/mm/yyyy),但读完后,它给出的日期为01/21/16(mm/dd/yy)

还有其他方法获取 cellstyle 吗?

是XLSX文件的问题吗?

String dateFmt = cell.getCellStyle().getDataFormatString();
                
if (DateUtil.isCellDateFormatted(cell)) {
    double val = cell.getNumericCellValue();
    Date date = DateUtil.getJavaDate(val);

    String dateFmt = cell.getCellStyle().getDataFormatString();
                                    
    System.out.println("dateFmt "+dateFmt);

    value = new CellDateFormatter(dateFmt).format(date);
                                    
    System.out.println("Date "+value);
                                
}

如果包含日期的单元格的格式设置为默认日期格式 (Short Date),则文件中仅存储格式 id 0xE (14)。看https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html. The *.xlsx文件仅包含

<xf numFmtId="14" ... applyNumberFormat="1"/>

in styles.xml。没有什么特别的formatCode为此保存numFmtId.

那么这将如何显示在Excel取决于系统的区域设置。

例如我的德语 Windows 系统numFmtId="14"将显示为TT.MM.JJJJ如中设置的Region and Language设置:

enter image description here

在英语英国 Windows 系统中,这将是DD/MM/YYYY默认情况下。

但如果你改变设置Short Date在系统设置中,JJJJ-MM-TT例如,此格式也将显示在 Excel 中numFmtId="14".

因此,要了解 Excel 将如何准确地显示日期numFmtId="14",需要知道确切的 Windows 系统设置Region and Language.

因此,如果不知道系统的区域设置,apache POI 也无法知道如何显示它,因为该文件不包含有关此的信息。所以它会假设en-us语言环境。这导致m/d/yy日期。

您可以检查是否使用了格式 id 14,如果使用了,请定义您自己的默认日期格式。

   if (DateUtil.isCellDateFormatted(cell)) {
    Date date = cell.getDateCellValue();

    System.out.println(date);

    String dateFmt = "";

    if (cell.getCellStyle().getDataFormat() == 14) { //default short date without explicit formatting
     dateFmt = "dd/mm/yyyy"; //default date format for this
    } else { //other data formats with explicit formatting
     dateFmt = cell.getCellStyle().getDataFormatString();
    }

    System.out.println("dateFmt " + dateFmt);

    String value = new CellDateFormatter(dateFmt).format(date);

    System.out.println("Date " + value);

   }

需要明确的是:这一切都只是numFmtId="14" cell.getCellStyle().getDataFormat() == 14。所有其他日期格式都将具有明确的数据格式字符串cell.getCellStyle().getDataFormatString()因此 POI 可以像在 Excel 中一样显示它们。


See POI DataFormatter 对于日期单元格返回 2 位年份而不是 4 位年份如何使用DataFormatter解决这个问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel单元格样式问题 的相关文章

  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • Hibernate OneToMany 关系是 PersistentBag 而不是 List

    我正在 javafx 中开发一个应用程序 它通过 RMI 与 EAR 连接 该 EAR 连接到 SQLServer DB 并使用 hibernate 映射 POJOS 这些 POJOS 包含双向 OneToMany 和 ManyToOne
  • 在 Kotlin 中实现返回 Collection 的 Java 方法

    我将 Kotlin 与 Spring Security 结合使用 实现该方法时 public interface UserDetails extends Serializable Collection
  • Spring webflow 应用程序:HTTP 302 暂时移动

    我的 java 应用程序中的每个请求都会生成另外 2 个带有 HTTP 302 错误的请求 例如 如果请求查看名为板 html 这个请求是从首页 html 我收到按以下顺序生成的 3 个请求 POST home html 302 Moved
  • Maven + Cobertura:无法找到[您的班级]。你指定了源目录吗?

    我有 MyMath 类 有两个简单的方法 multi 和 add 和测试类只会测试多种方法 public class MainTest Test public void testMultiply MyMath tester new MyMa
  • 方法不必要地被调用?

    我有一个 BaseActivity 它可以通过其他所有活动进行扩展 问题是 每当用户离开 暂停 活动时 我都会将音乐静音 我也不再接听电话 问题是 onPause每当用户在活动之间切换时就会被调用 这意味着应用程序不必要地静音和停止tele
  • @PreUpdate 不适用于 Spring Data JPA

    我有一个实体 Entity EntityListeners MyEntityListener class class MyEntity 还有听者 class MyEntityListener PrePersist PreUpdate pub
  • 在气球内显示带有照片的多个地标的最佳做法是什么?

    我有一个项目如下 从手机上拍摄几张照片 将照片保存在网络系统中 然后将照片显示在其中的谷歌地球上 我读过很多文章 但它们都使用 fetchKml 我读过的一篇好文章是使用 php 但使用 fetchKml 我不知道是否可以使用 parseK
  • 如何在具有动态列的表中插入值 Jdbc/Mysql

    我想在具有动态列的表中添加值 我设法创建一个包含动态列的表 但我不知道如何插入数据 Create Table sql CREATE TABLE MyDB myTable level INTEGER 255 int columnNumber
  • 检查所选单元格是否在特定范围内

    我正在使用 C 创建 Excel 加载项 如何检查选定的 或代码中范围表示的单元格 是否在特定范围内 例如如何检查单元格 P 5 是否在 A 1 Z 10 范围内 Use Application Intersect 像这样 在VBA中 Su
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • Java G1 GC 处理引用对象运行缓慢

    我已经在 J ava 上运行了计数器 它24小时工作 每秒点击通过100次左右 白天 GC 处理时间从 20 60 毫秒缓慢上升到 10000 60000 毫秒 然后下降到 20 60 毫秒 这种模式不时地重复 从 GC 日志中我发现 GC
  • Java String.format 向整数添加空格

    我有一小段代码 我不明白输出 此输出向我的字符串格式文本添加空格 我做错了什么吗 public class HelloWorld public static void main String args int a1 540 int a2 4
  • 使用外部硬盘写入和存储 mysql 数据库

    我已经设置了 mysql 数据库在我的 Mac 上使用 java 和 eclipse 运行 它运行得很好 但现在我将生成大约 43 亿行数据 这将占用大约 64GB 的数据 我存储了大量的密钥和加密值 我有一个 1TB 外部我想用作存储位置
  • 字节码和位码有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 LLVM 和 java 字节码有什么区别 https stackoverflow com questions 454720 what are the differences between llvm
  • 使用 ClosedXML 附加到 excel 文件

    我需要将新数据附加到使用 ClosedXML 创建的现有 Excel 文件中 如何使用 ClosedXML 附加到 Excel 文件 如何获取最后一条记录的行号并将其附加到该行号上 或者还有其他内容 Thanks 打开现有工作簿 然后使用L
  • Mule/码头设置

    我有一个正在运行的 Mule 应用程序 我想在其上设置 Jetty 来响应 http 请求 以下配置
  • Java的hashCode可以为不同的字符串产生相同的值吗?

    使用java的哈希码函数是否可以为不同的字符串提供相同的哈希码 或者如果可能的话 其可能性的 是多少 Java 哈希码是 32 位 它散列的可能字符串的数量是无限的 所以是的 会发生冲突 百分比是没有意义的 项目 字符串 的数量是无限的 而
  • 监控 Java 应用程序上的锁争用

    我正在尝试创建一个小基准 在 Groovy 中 以显示几个同步方法上的高线程争用 当监控自愿上下文切换时 应该会出现高争用 在 Linux 中 这可以通过 pidstat 来实现 程序如下 class Res private int n s

随机推荐

  • 计算青蛙到达河对岸所需的最少跳跃次数

    我正在处理下面提供的 Codility 问题 斐波那契数列使用以下递归公式定义 F 0 0 F 1 1 F M F M 1 F M 2 if M gt 2 一只小青蛙想要到河的对岸 青蛙最初位于河的一侧 位置 1 并想要到达另一侧 位置N
  • 检查 PHP 中的多个变量(布尔值)

    我在我的代码中使用它 但我认为它可以改进并且可以用更简单的方式完成 if phaseOne true phaseTwo true phaseThree true 你可以这样做 if phaseOne phaseTwo phaseThree
  • 在 Pandas 中按组回填列

    我有一个类似的csv A B C D 1 2 1 2 30 100 1 2 40 100 4 5 4 5 60 200 4 5 70 200 8 9 第 1 行和第 4 行中缺少 C 值 NaN 我想分别从第 2 行和第 5 行获取它们的值
  • 如何在GroupLayout Java中设置Jframe背景图片

    我试图为我的框架设置背景图像 但它不起作用 我尝试了这个链接 在 JFrame 中设置背景图像 代码 setContentPane new JLabel new ImageIcon ImageIO read new File Images
  • split 不返回空元素

    为什么这些不都返回bbb perl e a print map b split a lt
  • 过滤器功能 dplyr 似乎不起作用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 假设我在 R Studio 中加载了一个名为 exprCore1 的数据框 df 如下所示 measure qid value 1 p5 1 0 2 2 p100 1 0 8
  • Angular2路由器保留查询字符串

    我编写了一个使用路由器的 Angular2 v2 0 1 应用程序 该网站加载了多个查询字符串参数 因此完整的 URL 最初如下所示 https my application com param1 val1 param2 val2 para
  • 设计以避免派生类中的类型转换?

    public interface IBasePresenter public interface IJobViewPresenter IBasePresenter public interface IActivityViewPresente
  • 使用变量过滤器列出文件

    我正在尝试在 shell bash 中使用过滤器列出文件 这个例子有效 result ls A1 A2 txt echo result 文件1 A1 txt 文件2 A2 txt 但是当将过滤器放入变量中时 它不起作用 filter A1
  • 带 AVPlayer 的应用程序启动后播放 mp4 中断 iPod 音乐

    我的应用程序使用 AVPlayer 播放 mp4 当我的应用程序完成启动时 它会中断 iPod 音乐 尽管我已将音频会话设置为允许与其他人混合 BOOL application UIApplication application didFi
  • C++(LAPACK、sgels)和 Python(Numpy、lstsq)结果之间的差异

    我正在比较 C 和 Python 计算的数值结果 在 C 中 我利用 LAPACK 的 sgels 函数来计算线性回归问题的系数 在 Python 中 我使用 Numpy 的 linalg lstsq 函数来完成类似的任务 sgels 和
  • Angular2:渲染/重新加载组件的模板

    理想情况下 我需要重新加载 重新渲染我的组件模板 但如果有更好的方法来做到这一点 我将很乐意实现它 期望的行为 所以 我有一个菜单元素的组件 什么时候 在另一个组件中 我点击一个 IBO 每说某种 客户 被点击我需要add 我在用着 ngI
  • clojure.java.sh:没有这样的文件或目录

    我编写了一个程序来汇编 dot 文件 并想使用 Clojure 的sh给出编译命令 具体来说 我使用以下函数来做到这一点 defn compile graphviz Dumps graphviz string to a file then
  • 从常见图像格式中删除所有元数据?

    我正在为一个项目编写一项服务来处理我们的图像处理 一个这样的过程应该从数据中剥离所有元数据byte 提供并返回相同的图像byte 我目前正在研究的方法涉及始终将图像转换为Bitmap 然后将其转换回原始格式并从 a 返回数据MemorySt
  • 使用 Microsoft Graph 客户端库访问 One Drive 时无法检索用户的 mysite URL

    尝试访问 One Drive 内容时 使用 Microsoft Graph 客户端库的以下代码段失败 var items Graphclient Me Drive Root Children Request GetAsync Result
  • 执行“捆绑安装”后无法找到 Gemfile

    嘿 我对 Rails 完全陌生 刚刚开始按照教程的步骤创建我的第一个项目 我使用以下方法创建了新项目 rails myapp 那我应该执行bundle install 这不起作用 因为尚未安装捆绑程序 在 Gems 更新并安装捆绑程序后我已
  • Elasticsearch 聚合将结果转换为小写

    我玩了一下 ElasticSearch 在进行聚合时发现了一个问题 我有两个端点 A and B 在第一个中 我有第二个的父母 因此 B 中的一个或多个对象必须属于 A 中的一个对象 因此 B 中的对象有一个属性 parentId 其父级索
  • 根据第一列将两个文件合并为一个

    我有两个文件 两者格式相同 两列都包含一个数字 例如 file 1 1 00 99 2 00 343 3 00 34 10 00 343 file 2 1 00 0 4 2 00 0 5 3 00 0 34 10 00 0 9 我想生成以下
  • 检查 nsstring 中的多个字符

    我有一个字符串 我想检查该字符串中的多个字符 下面的代码我对一个字符工作正常 如何检查多个字符 NSString yourString ABCCDEDRFFED For example NSScanner scanner NSScanner
  • Excel单元格样式问题

    我使用下面的代码从 XLSX 文件中获取日期值 这对于某些 XLSX 文件来说工作得非常好 但它没有给出 XLSX 文件中的确切日期格式 此问题针对某些文件 例如 我有这样的约会21 01 2016 dd mm yyyy 但读完后 它给出的