解析excel如何处理法文乱码问题

解决办法:在解析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;
	}

附上代码:

猜你喜欢

转载自blog.csdn.net/MoveFlower/article/details/80569664