文件上传与解析Excel:fileupload+poi

一:介绍

前端:文件上传原理便是数据的提交,比如Form表单提交、Ajax提交、Ajax提交Form表单等,有多种组合方式,根据需求

不同,使用不同的提交方式,但是原理相同。

后端:接收前端发送的数据(File),解析文件(本文为Excel),解析Excel有多种方式,如poi,还有网上的js-xlsx-master相关js,后者为一个开源项目实例,本文没有使用。

基本原理:读取Excel表,根据版本不同创建不同的Workbook;遍历所有的Sheet;遍历所有row;遍历所有cell;

row为List<Object>,最终re为List<List<Object>>,当然根据需要不同,也可以返回不同类型,比如一个Sheet组成一个List<List<Object>>进行返回,根据需求不同返回不同。

以下测试开发使用Spring mvc框架,使用的包主要有commons-fileupload-1.3.3.jar和org.apache.poi包网上有说必须要有commons-io包,因为fileupload依赖于他因为开发为一个模块,这些包原来都有了,并没有测试)。

二、后台函数

Controller函数:该方法接收传递数据(File),调用工具类和服务层方法进行处理,分别为获取List和对数据进行处理,

本处为数据入库。如果读取为部分数据,可以:1.数据库设置默认值2.new Object时构造赋值3.插入时sql中赋值。

 

/**
	 * 数据上传导入
	 * @param file
	 * @param model
	 * @param request
	 * @param res
	 */
	@RequestMapping("/upload.json")
	public ModelMap uploadExcel(ModelMap model,HttpServletRequest request,@RequestParam("excelFile")MultipartFile file){
		System.out.println("upload");
		int num=0;
		try {
			List<S>list=FileUtil.doUploadFile(file, request);
			num=sListService.doUploadFile(list);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("导入失败");
			return new ModelMap("info", "导入失败");
		}
//		model.addAttribute("info", ""+num+"条记录导入成功");
		System.out.println(num+"条记录导入成功");
		return new ModelMap("info", num+"条记录导入成功");
	}

FileUtil工具类:文件保存部分因为FileUtils报错而且不用就注掉了

该类调用工具类对Excel进行处理,获得处理结果List<List<Object>>,将处理结果进行处理,变为List<

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值