EasyPOI 与 SpringMVC
在开发前端这块大多使用 SpringMVC,EasyPOI 也提供了 对 SpringMVC 的支持;
EasypoiBigExcelExportView 大数据量导出
EasypoiMapExcelView map 列表导出
EasypoiPDFTemplateView pdf导出
EasypoiSingleExcelView 注解导出
EasypoiTemplateExcelView 模板导出
EasypoiTemplateWordView word模板导出
MapGraphExcelView 图表导出
导入页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<%@include file="/WEB-INF/views/head.jsp" %>
</head>
<body>
<span style="color: red">${count}</span>
<!-- 上传请配置enctype -->
<form action="/import/xlsx" method="post" enctype="multipart/form-data">
<input class="easyui-filebox" name="xlsxFile" data-options="prompt:'选择一个文件...'" style="width:80%">
<button class="easyui-linkbutton" type="submit">确定</button>
</form>
</body>
</html>
Controller
@Controller
@RequestMapping("/import")
public class ImportController extends BaseController {
@Autowired
private IEmployeeService employeeService;
@Autowired
private IDepartmentService departmentService;
//跳转到导入页面
@RequestMapping("/index")
public String index(){
return "import";
}
//跳转到导入页面
@RequestMapping("/xlsx")
public String importXlsx(MultipartFile xlsxFile, HttpServletRequest request, HttpServletResponse response) throws Exception{
ImportParams params = new ImportParams();
params.setTitleRows(1); //注意:这里有两个表头
List<Employee> list = ExcelImportUtil.importExcel(
xlsxFile.getInputStream(),
Employee.class, params);
for (Employee employee : list) {
employee.setPassword("123"); //默认密码123
if(employee.getDepartment()!=null) {
Department department = departmentService.findByName(employee.getDepartment().getName());
employee.setDepartment(department);
}
employeeService.save(employee);
}
return "import";
}
}
自定义验证(用户名重复)
自定义验证需要实现IExcelVerifyHandler接口
@Component
public class MyVerifyHandler implements IExcelVerifyHandler<Employee> {
@Autowired
private IEmployeeService employeeService;
@Override
public ExcelVerifyHandlerResult verifyHandler(Employee employee) {
ExcelVerifyHandlerResult result = new ExcelVerifyHandlerResult();
if (!employeeService.checkUsername(employee.getUsername())) {
result.setMsg("该用户已存在");
result.setSuccess(false);
return result;
}
result.setSuccess(true);
return result;
}
}
@Autowired
private MyVerifyHandler myVerifyHandler;
...
//跳转到导入页面
@RequestMapping("/xlsx")
public String importXlsx(MultipartFile xlsxFile, HttpServletRequest request, HttpServletResponse response) throws Exception{
ImportParams params = new ImportParams();
params.setNeedVerfiy(true); //代表这里是需要验证的
params.setVerifyHandler(myVerifyHandler); //我自己定义的校验器
params.setTitleRows(1); //注意:这里有两个表头
//拿到错误的值
ExcelImportResult<Employee> result = ExcelImportUtil.importExcelMore(
xlsxFile.getInputStream(),
Employee.class, params);
// 把正确的员工进行保存
for (Employee employee : result.getList()) {
employee.setPassword("123"); //默认密码123
if(employee.getDepartment()!=null) {
Department department = departmentService.findByName(employee.getDepartment().getName());
employee.setDepartment(department);
}
employeeService.save(employee);
}
if (result.isVerfiyFail()) { //验证是否失败(把抢购的xlsx拿出去)
ServletOutputStream fos = response.getOutputStream();
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); //mime类型
response.setHeader("Content-disposition", "attachment;filename=errorx.xlsx");
response.setHeader("Pragma", "No-cache");
result.getFailWorkbook().write(fos);
fos.close();
}
return "import";
}
本文暂时没有评论,来添加一个吧(●'◡'●)