找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9899

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15533

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-2-1 10:12  /   查看:2052  /  回复:0
GcExcel在设置日期的时候不支持直接设置日期字符串,例如下面这个例子:
  1. Workbook workbook = new Workbook();
  2.         IWorksheet worksheet = workbook.getActiveSheet();
  3.         worksheet.getRange("A1").setValue("12/31/2030");
  4.         worksheet.getRange("A1").setNumberFormat("yyyy-mm-dd");
  5.         System.out.println("text:"+worksheet.getRange("A1").getText());
  6.         System.out.println("formatter:"+worksheet.getRange("A1").getNumberFormat());
复制代码
给单元格设置了yyyy-mm-dd的格式,之后给单元格设置"12/31/2030"。结果输出会发现,虽然单元格的格式已经变成了"yyyy-mm-dd",但是结果仍然为"12/31/2030",而与我们预期的"2030-12-31"并不符合
image.png668328246.png
当我们把输出导出成Excel,在Excel中查看,能够发现原因,如下图所示:
image.png941539001.png
红框部分是我们导出的刚刚输入的日期,蓝框部分是我们在Excel上直接输入的日期,最显著的区别是他们的对齐位置不同(这里均未设置对齐方式)。熟悉Excel的同学们应该很清楚Excel中的字符串默认是左对齐的,所以可以看出GcExcel红框的中的日期实际上是一个字符串,这也就解释了为什么之前不能够被format成yyyy-mm-dd的原因。
那么在GcExcel中改如何设置呢?
我们可以将对应的字符串通过SimpleDateFormat转换为对应的日期格式,然后再将date对象设置进去
  1. String dateStr = "2030/12/31";
  2.         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
  3.         Date dateTime = null;
  4.         dateTime = simpleDateFormat.parse(dateStr);
复制代码
之后我们同样看一下输出
image.png317501830.png
这时可以看到结果生效了。这样就达到了我们预期想要的效果。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部