Clark.Pan 发表于 2021-2-1 11:49:42

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

上一期我们已经介绍了GcExcel如何设置日期,那就是直接设置一个Date类型的日期,如果是日期类型的字符串需要转换成对应的Date对象才行。
本期我们介绍一个GcExcel自带的自动转换方法setAutoParse。这个设置之后可以开启自动转换的功能,这样一些的日期的字符串就可以支持直接设置。
而setAutoParse本身有一个需要注意的点,在一些比较特殊的日期格式时,自动转换的日期类别跟Culture的设置有关。举个例子
12/31/2030这个日期格式,在中文的Culture下就无法被自动转换。输出结果没有改变
Workbook workbook = new Workbook();
      workbook.setCulture(Locale.CHINESE);
      IWorksheet worksheet = workbook.getActiveSheet();
      workbook.setAutoParse(true);
      String dateStr = "12/31/2030";
      worksheet.getRange("A1").setValue(dateStr);
      worksheet.getRange("A1").setNumberFormat("yyyy-mm-dd");
      System.out.println("text:"+worksheet.getRange("A1").getText());
      System.out.println("formatter:"+worksheet.getRange("A1").getNumberFormat());
当我们切换Culture为English时,结果变为正常
Workbook workbook = new Workbook();
      workbook.setCulture(Locale.ENGLISH);
      IWorksheet worksheet = workbook.getActiveSheet();
      workbook.setAutoParse(true);
      String dateStr = "12/31/2030";
      worksheet.getRange("A1").setValue(dateStr);
      worksheet.getRange("A1").setNumberFormat("yyyy-mm-dd");
      System.out.println("text:"+worksheet.getRange("A1").getText());
      System.out.println("formatter:"+worksheet.getRange("A1").getNumberFormat());
同理,像2030年12月30日这样的日期字符串,在中文状态下可以自动转换
Workbook workbook = new Workbook();
      workbook.setCulture(Locale.CHINESE);
      IWorksheet worksheet = workbook.getActiveSheet();
      workbook.setAutoParse(true);
      String dateStr = "2030年12月30日";
      worksheet.getRange("A1").setValue(dateStr);
      worksheet.getRange("A1").setNumberFormat("yyyy-mm-dd");
      System.out.println("text:"+worksheet.getRange("A1").getText());
      System.out.println("formatter:"+worksheet.getRange("A1").getNumberFormat());
如上图所示2030年12月30日转换成了2030-12-30
但是当Culture为English时,结果却不能转换
Workbook workbook = new Workbook();
      workbook.setCulture(Locale.ENGLISH);
      IWorksheet worksheet = workbook.getActiveSheet();
      workbook.setAutoParse(true);
      String dateStr = "2030年12月30日";
      worksheet.getRange("A1").setValue(dateStr);
      worksheet.getRange("A1").setNumberFormat("yyyy-mm-dd");
      System.out.println("text:"+worksheet.getRange("A1").getText());
      System.out.println("formatter:"+worksheet.getRange("A1").getNumberFormat());
如上图所示2030年12月30日转换没有被转换成2030-12-30
页: [1]
查看完整版本: 通过GcExcel给单元格直接设置日期(二)