spire.xls版本: 13.10.0
1 2 3 4 5 6 7 8 9 10 11 12
| public static void convertExcelToCsvSpire(String sourceFile, String csvFilePath){ com.spire.xls.Workbook workbook = new com.spire.xls.Workbook(); workbook.loadFromFile(sourceFile); workbook.calculateAllValue(); Worksheet sheet = workbook.getWorksheets().get(0); sheet.saveToFile(csvFilePath, ",", Charset.forName("UTF-8")); }
|
以上代码在mac中调试的时候,Excel中日期内容为 2023/1/2 12:00:00
,另存为csv
后日期可以正确转换成2023/1/2 12:00:00
,但发布服务器后发现csv
保存的日期字段字段为1/2/2023 12:00:00
。
原因是Spire.xls
在保存时会检查当前机器的语言,服务器的默认语言一般是英文,所以 csv 的日期格式被默认转成了英文的日月年格式,将mac的语言调整成语后成功复现。
解决方法就是修改服务的默认语言为中文,加一行Locale.setDefault(Locale.CHINA);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public static void convertExcelToCsvSpire(String sourceFile, String csvFilePath){ Locale.setDefault(Locale.CHINA); com.spire.xls.Workbook workbook = new com.spire.xls.Workbook(); workbook.loadFromFile(sourceFile); workbook.calculateAllValue(); Worksheet sheet = workbook.getWorksheets().get(0); sheet.saveToFile(csvFilePath, ",", Charset.forName("UTF-8")); }
|
资料
xls 转换 pdf时,日期格式的问题。