java poi Excel文件导入

@RequestMapping(value = "uploadExceptionData")
@ResponseBody
public String uploadExceptionData(HttpServletRequest request,String billinfoId){
//创建一个jsonobject存放返回的数据
JSONObject object = new JSONObject();
//获取当前登录的用户
UserInfo loginInfo = (UserInfo) request.getSession().getAttribute("userInfo");
//判断是否获取了以后信息
if(loginInfo == null){
object.put("result", "获取不了登录用户");
}
try {
//使用spring
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
MultipartFile file = multipartRequest.getFile("file");  
String ext = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
if(file != null && file.getSize() > 0 && ext != null && !"".equals(ext)){
//获取导入的数据
Map<String,Object> map = financeBillInfoExceptionDetaileService.uploadExceptionMoneyData(file.getInputStream(),ext,loginInfo,billinfoId);
if(map.containsKey("result") && "0".equals(map.get("result").toString())){
List<FinanceBillInfoExceptionDetaile> fbed = (List<FinanceBillInfoExceptionDetaile>) (map.containsKey("list")?map.get("list"):new ArrayList<FinanceBillInfoExceptionDetaile>());
if(fbed != null && fbed.size() > 0){
object.put("data", fbed);
object.put("result", "导入数据成功");
}else{
object.put("result", "未解析到导入数据");
}
}else if(map.containsKey("result") && "1".equals(map.get("result").toString())){
object.put("result", "请检查导入文件的日期数据!");
}else if(map.containsKey("result") && "2".equals(map.get("result").toString())){
object.put("result", "请检查导入文件的异常类型数据!");
}else if(map.containsKey("result") && "3".equals(map.get("result").toString())){
object.put("result", "请检查导入文件的异常原因数据!");
}else if(map.containsKey("result") && "4".equals(map.get("result").toString())){
object.put("result", "请检查导入文件的异常金额数据!");
}else if(map.containsKey("result") && "5".equals(map.get("result").toString())){
object.put("result", "请检查导入文件的责任人数据!");
}else{
object.put("result", "导入数据失败");
}
}
 
} catch (Exception e) {
e.printStackTrace();
object.put("result", "导入异常");
}
return object.toString();
}




serviceImpl:
   /**
* 导入异常金额数据的service的实现类
* @return   result 0 保存成功  1时间问题, 2异常类型问题 3异常原因问题  4异常金额问题  5责任人问题
*/
@Override
public Map<String,Object> uploadExceptionMoneyData(
InputStream inputStream, String ext, UserInfo loginInfo,String billinfoId) {
Map<String,Object> map = new HashMap<String,Object>();
List<FinanceBillInfoExceptionDetaile> list = new ArrayList<FinanceBillInfoExceptionDetaile>();
//由于导入数据用的表格为excel
//创建一个工作簿
Workbook wb = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
//判断导入的excel文件的后缀名,excel分版本所以需要根据后缀判断创建哪个poi
if(".xls".equals(ext)){
wb = new HSSFWorkbook(inputStream);
}else if(".xlsx".equals(ext)){
wb = new XSSFWorkbook(inputStream);
}
//解析excel文件
//得到需要导入的sheet
Sheet sheet = wb.getSheetAt(0);
FinanceBillInfoExceptionDetaile fbed = null;
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
//得到每一行的
Row row = sheet.getRow(i);
//创建一个实体类存放数据
fbed = new FinanceBillInfoExceptionDetaile();
if(row.getCell(0) != null || row.getCell(1) != null || row.getCell(2) != null 
|| row.getCell(3) != null || row.getCell(4) != null){
if(row.getCell(0) != null){//日期
row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
try{
Pattern pattern = Pattern.compile("[0-9]*"); 
   Matcher isNum = pattern.matcher(row.getCell(0).getStringCellValue());
   if(isNum.matches()){
Calendar cal = Calendar.getInstance();
cal.set(1900, 0, 0);
cal.add(Calendar.DATE, Integer.parseInt(row.getCell(0).getStringCellValue())-1);
fbed.setDateTime(cal.getTime().getTime());
}else{
fbed.setDateTime(sdf.parse(row.getCell(0).getStringCellValue()).getTime());
}
}catch(Exception e){
}
}else{
map.put("result", 1);
map.put("list", new ArrayList<FinanceBillInfoExceptionDetaile>());
return map;
}
if(row.getCell(1) != null){//异常类型
fbed.setExceptionType(row.getCell(1).getStringCellValue());
}else{
map.put("result", 2);
map.put("list", new ArrayList<FinanceBillInfoExceptionDetaile>());
return map;
}
if(row.getCell(2) != null){//异常原因
fbed.setExceptionCause(row.getCell(2).getStringCellValue());
}else{
map.put("result", 3);
map.put("list", new ArrayList<FinanceBillInfoExceptionDetaile>());
return map;
}
if(row.getCell(3) != null){//异常金额
if(row.getCell(3).getCellType() == Cell.CELL_TYPE_NUMERIC){
fbed.setExceptionMoney(row.getCell(3).getNumericCellValue());
}else{
try {
fbed.setExceptionMoney(Double.parseDouble(row.getCell(3).getStringCellValue()));
} catch (Exception e) {
map.put("result", 4);
map.put("list", new ArrayList<FinanceBillInfoExceptionDetaile>());
return map;
}
}
}else{
map.put("result", 4);
map.put("list", new ArrayList<FinanceBillInfoExceptionDetaile>());
return map;
}
if(row.getCell(4) != null){//负责人
fbed.setResponsibleName(row.getCell(4).getStringCellValue());
}else{
map.put("result", 5);
map.put("list", new ArrayList<FinanceBillInfoExceptionDetaile>());
return map;
}
list.add(fbed);
}
}
} catch (Exception e) {
e.printStackTrace();
}
map.put("result", 0);
map.put("list", list);
return map;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值