Clark.Pan 发表于 2021-2-1 10:12:55

通过GcExcel给单元格直接设置日期(一)

GcExcel在设置日期的时候不支持直接设置日期字符串,例如下面这个例子:
Workbook workbook = new Workbook();
      IWorksheet worksheet = workbook.getActiveSheet();
      worksheet.getRange("A1").setValue("12/31/2030");
      worksheet.getRange("A1").setNumberFormat("yyyy-mm-dd");
      System.out.println("text:"+worksheet.getRange("A1").getText());
      System.out.println("formatter:"+worksheet.getRange("A1").getNumberFormat());
给单元格设置了yyyy-mm-dd的格式,之后给单元格设置"12/31/2030"。结果输出会发现,虽然单元格的格式已经变成了"yyyy-mm-dd",但是结果仍然为"12/31/2030",而与我们预期的"2030-12-31"并不符合

当我们把输出导出成Excel,在Excel中查看,能够发现原因,如下图所示:

红框部分是我们导出的刚刚输入的日期,蓝框部分是我们在Excel上直接输入的日期,最显著的区别是他们的对齐位置不同(这里均未设置对齐方式)。熟悉Excel的同学们应该很清楚Excel中的字符串默认是左对齐的,所以可以看出GcExcel红框的中的日期实际上是一个字符串,这也就解释了为什么之前不能够被format成yyyy-mm-dd的原因。
那么在GcExcel中改如何设置呢?
我们可以将对应的字符串通过SimpleDateFormat转换为对应的日期格式,然后再将date对象设置进去
String dateStr = "2030/12/31";
      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
      Date dateTime = null;
      dateTime = simpleDateFormat.parse(dateStr);之后我们同样看一下输出

这时可以看到结果生效了。这样就达到了我们预期想要的效果。

页: [1]
查看完整版本: 通过GcExcel给单元格直接设置日期(一)