解决办法:在解析excel时将编码集ISO 8859-1替换为 ISO 8859-15.
ISO-8859-1编码是单
字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是
控制字符,0xA0-0xFF之间是文字符号。
此字符集支持部分于欧洲使用的语言,包括
阿尔巴尼亚语、
巴斯克语、
布列塔尼语、加泰罗尼亚语、丹麦语、
荷兰语、
法罗语、
弗里西语、
加利西亚语、德语、
格陵兰语、
冰岛语、
爱尔兰盖尔语、意大利语、拉丁语、
卢森堡语、
挪威语、葡萄牙语、里托罗曼斯语、
苏格兰盖尔语、西班牙语及瑞典语。
英语虽然没有
重音字母,但仍会标明为ISO/IEC 8859-1编码。除此之外,欧洲以外的部分语言,如
南非荷兰语、
斯瓦希里语、
印尼语及
马来语、菲律宾他加洛语等也可使用ISO/IEC 8859-1编码。
法语及芬兰语本来也使用ISO/IEC 8859-1来表示。但因它没有法语使用的
œ、
Œ、Ÿ 三个字母及芬兰语使用的 Š、š、Ž、ž ,故于1998年被ISO/IEC 8859-15所取代。(ISO 8859-15同时加入了欧元符号)
—————— 来自百度
附上代码: 加上红色的三行代码搞定。
@Override
public Object platformAndOfflineOrderUpExcelFile(MultipartFile file) {
JSONObject jsonObject = new JSONObject();
InputStream fileInputStream = null;
// 保存文件
if (!file.isEmpty()) {
//------保存所有修改并提交事务
Transaction tx = null;
long startTime = System.currentTimeMillis();
try
{
tx = Transaction.current();
tx.begin();
LOG.info("platformAndOfflineOrderUpExcelFile Start-------->:"+System.currentTimeMillis());
String filename = file.getOriginalFilename();
LOG.info("platformAndOfflineOrderUpExcelFile File Name is ----->>>>:"+filename);
fileInputStream = file.getInputStream();
WorkbookSettings workbookSettings=new WorkbookSettings();
workbookSettings.setEncoding("ISO-8859-15");
Workbook rwb = Workbook.getWorkbook(fileInputStream,workbookSettings);
Sheet sheet = rwb.getSheet(0);
List<ImportPlatformAndOfflineOrder> importPlatformAndOfflineOrders = new ArrayList();
//解析excel
pasePlatformAndOfflineOrder(sheet, importPlatformAndOfflineOrders);
//校验Excel并保存
Map<String,Object> result = savePlatformAndOfflineOrder(importPlatformAndOfflineOrders,file);
tx.commit();
long endTime = System.currentTimeMillis();
LOG.info("platformAndOfflineOrderUpExcelFile End Consume Time:-------->:"+(endTime-startTime));
jsonObject.put("status", "SUCCESS");
jsonObject.put("data", result);
}
catch (Exception e)
{
long endTime = System.currentTimeMillis();
LOG.info("platformAndOfflineOrderUpExcelFile End Consume Time:-------->:"+(endTime-startTime));
jsonObject.put("status", "ERROR");
jsonObject.put("message", e.getMessage());
LOG.error("platformAndOfflineOrderUpExcelFile exception----->>>>: " + e.getMessage() + "\n" + e.getLocalizedMessage());
if (tx != null)
{
tx.rollback();
}
}
finally
{
if(fileInputStream!=null){
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return jsonObject;
}
附上代码: