- 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