- titleRows
这个参数的意思是:excel标题占多少行,而不是第几行 - headRows
这个参数的意思是:excel表头占几行,而不是第几行(多行的意思是合并的行数)
比如有一个excel如下,1-2行是标题,3-4行是表头,他们都合并了。
那么代码可以这样设置:
ImportParams params = new ImportParams();
//这个参数的意思是:excel标题占多少行,而不是第几行
params.setTitleRows(2);
//这个参数的意思是:excel表头占几行,而不是第几行(多行的意思是合并的行数)
params.setHeadRows(2);
//表格sheet数量
params.setSheetNum(1);//从第几个表格开始读 默认0
//params.setStartSheetIndex(1);
//读取的表格sheet数量
//params.setSheetNum(1);
上传示例:
@RequestMapping("/importExcel")public String importExcel(@RequestParam("file") MultipartFile file, Model model) {List<Province> provinces = null;InputStream inputStream = null;try {ImportParams params = new ImportParams();//这个参数的意思是:excel标题占多少行,而不是第几行params.setTitleRows(2);//这个参数的意思是:excel表头占几行,而不是第几行(多行的意思是合并的行数)params.setHeadRows(2);//表格sheet数量params.setSheetNum(1);inputStream = file.getInputStream();provinces = ExcelImportUtil.importExcel(inputStream, Province.class, params);//把导入的信息输出到控制台for(Province pro:provinces) {System.out.println(pro);}} catch (Exception e) {model.addAttribute("msg","导入失败");e.printStackTrace();}finally {//这里注意释放资源:import org.apache.tomcat.util.http.fileupload.IOUtils;//否则会报错IOUtils.closeQuietly(inputStream);}model.addAttribute("msg","导入成功");return "importExcel";}
最后finally里注意释放资源,否则可能会报类似如下错误:
s.w.m.s.StandardServletMultipartResolver : Failed to perform cleanup of multipart items
java.io.UncheckedIOException: Cannot delete C:\Users\username\AppData\Local\Temp\tomcat.8080.xxxx\work\Tomcat\localhost\ROOT\upload_xxxx_00000000.tmp