通过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]