java中Excel导入,下载模板,附带前端展示
程序员文章站
2022-06-19 14:45:28
java中Excel导入,下载模板,附带前端展示后台下载模板代码 /** * 多个模板下载 */ @RequestMapping(value = "/downloadExcel", method = RequestMethod.GET) @ResponseBody public void downloadExcel(HttpServletRequest request,HttpServletResponse response,String type) {...
java中Excel导入,下载模板,附带前端展示
后台下载模板代码
/**
* 多个模板下载
*/
@RequestMapping(value = "/downloadExcel", method = RequestMethod.GET)
@ResponseBody
public void downloadExcel(HttpServletRequest request,HttpServletResponse response,String type) {
try {
//获取要下载的模板名称
String fileName = "";
if("solidWaste".equals(type)){
fileName = "模板名称.xlsx";
}else if("buildTrash".equals(type)){
fileName = "模板名称.xlsx";
}else if("lifeTrash".equals(type)){
fileName = "模板名称.xlsx";
}else if("recycLing".equals(type)){
fileName = "模板名称.xlsx";
}
ExcelUtils.downloadExcel(request,response,fileName);
//return Response.ok("应用导入模板下载完成");
} catch (Exception ex) {
logger.error("getApplicationTemplate :", ex);
//return Response.ok("应用导入模板下载失败!");
}
}
vue前端调用方法
<el-button type="primary" @click="downloadExcel()">下载Excel模板</el-button>
downloadExcel () {
window.location.href = this.$http.adornUrl('接口名称?type=参数类型')
},
后台导入Excel controller层
/**
* 导入Excel
* @param file
* @param session
* @return
* @throws
*/
@RequestMapping(value = "/importExcel",method = RequestMethod.POST)
public R importExcel(@RequestParam("file") MultipartFile file, HttpSession session) throws IOException {
InputStream inputStream = null;
R result = new R();
try {
//获取最后一个.的位置
int lastIndexOf = file.getOriginalFilename().lastIndexOf(".");
//获取文件的后缀名 .jpg
String suffix = file.getOriginalFilename().substring(lastIndexOf);
if(!suffix.equals(".xlsx") && !suffix.equals(".xls")){
result.put("code", Constant.SERVER_ERROR);//服务端错误 500
result.put("msg","上传文件格式错误,请检查重新上传!");
return result;
}
inputStream = file.getInputStream();
Workbook wb = WorkbookFactory.create(inputStream);
Long userId = getUserId();
Map<String,Object> res = dataSolidWasteService.importExcelData(wb,session,userId);
result.put("code",res.get("code"));
result.put("msg",res.get("msg"));
return result;
}catch (Exception e){
e.printStackTrace();
result.put("code",Constant.SERVER_ERROR);//服务端错误 500
result.put("msg","导入数据异常,请联系管理员!");
return result;
}
}
后台导入Excel 业务处理层
/**
* 读取Excel文件中的值并导入
* @param wb
* @param session
* @return 导入成功返回200,失败则返回对应的原因
*/
@Override
public Map<String,Object> importExcelData(Workbook wb, HttpSession session, Long userId){
List<Map<String,Object>> resList = new ArrayList<>();
Sheet sheet = wb.getSheetAt(0);
Map<String,Object> map = new HashMap<>();
List<DataSolidWasteEntity> addList = new ArrayList<>(); //保存信息集合
//自己封装的工具类 设置一些参数之类的
int index = ExcelUtils.getExcelRealRow(sheet);//有效行数
if(index == 0){
map.put("code", Constant.EXCEL_CHECK_NULL);//服务端错误 52001
map.put("msg","导入的记录行数不能为0,请确认后再操作!");
return map;
}
if(sheet.getRow(0).getCell(0) != null){
//设置String类型
sheet.getRow(0).getCell(0).setCellType(Cell.CELL_TYPE_STRING);
String name1 = sheet.getRow(0).getCell(0).getStringCellValue().replaceAll(" +","");
String name2 = sheet.getRow(0).getCell(1).getStringCellValue().replaceAll(" +","");
String name3 = sheet.getRow(0).getCell(2).getStringCellValue().replaceAll(" +","");
String name4 = sheet.getRow(0).getCell(3).getStringCellValue().replaceAll(" +","");
String name5 = sheet.getRow(0).getCell(4).getStringCellValue().replaceAll(" +","");
String name6 = sheet.getRow(0).getCell(5).getStringCellValue().replaceAll(" +","");
String name7 = sheet.getRow(0).getCell(6).getStringCellValue().replaceAll(" +","");
if(!"统计月份".equals(name1) || !"区县".equals(name2) || !"企业名称".equals(name3)
|| !"固废种类".equals(name4)
|| !"利用技术".equals(name5) || !"处置利用量".equals(name6)
|| !"主要产品及产量".equals(name7)
){
map.put("code",Constant.EXCEL_CHECK_NULL);//服务端错误 52001
map.put("msg","表头列名错误!");
return map;
}
}
//循环每一行
for(int i = 1;i<index+1;i++){
//循环第i行
if(sheet.getRow(i) != null){
//表格实体类 根据自己的需求加入
DataSolidWasteEntity dre = new DataSolidWasteEntity();
//第一列统计月份
if(sheet.getRow(i).getCell(0) != null){
//设置String类型
sheet.getRow(i).getCell(0).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(0).getStringCellValue().trim())){
String statisticsMonth = sheet.getRow(i).getCell(0).getStringCellValue().trim();
dre.setStatisticsMonth(statisticsMonth);
}
}
//第二列区县
if(sheet.getRow(i).getCell(1) != null){
//设置String类型
sheet.getRow(i).getCell(1).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(1).getStringCellValue().trim())){
String countyName = sheet.getRow(i).getCell(1).getStringCellValue().trim();
dre.setCountyName(countyName);
}
}
//第三列企业单位
if(sheet.getRow(i).getCell(2) != null){
//设置String类型
sheet.getRow(i).getCell(2).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(2).getStringCellValue().trim())){
String receiveCompany = sheet.getRow(i).getCell(2).getStringCellValue().trim();
dre.setReceiveCompany(receiveCompany);
}
}
//第四列固废类别
if(sheet.getRow(i).getCell(3) != null){
//设置String类型
sheet.getRow(i).getCell(3).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(3).getStringCellValue().trim())){
String trashType = sheet.getRow(i).getCell(3).getStringCellValue().trim();
dre.setTrashType(trashType);
}
}
//第五列利用技术
if(sheet.getRow(i).getCell(4) != null){
//设置String类型
sheet.getRow(i).getCell(4).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(4).getStringCellValue().trim())){
String usedUtilize = sheet.getRow(i).getCell(4).getStringCellValue().trim();
dre.setUsedUtilize(usedUtilize);
}
}
//第六列处置利用量
if(sheet.getRow(i).getCell(5) != null){
//设置String类型
sheet.getRow(i).getCell(5).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(5).getStringCellValue().trim())){
String usedUtilizeNum = sheet.getRow(i).getCell(5).getStringCellValue().trim();
dre.setUsedUtilizeNum(usedUtilizeNum);
}
}
//第七列主要产品(多个用分号隔开)
if(sheet.getRow(i).getCell(6) != null){
//设置String类型
sheet.getRow(i).getCell(6).setCellType(Cell.CELL_TYPE_STRING);
if(!"".equals(sheet.getRow(i).getCell(6).getStringCellValue().trim())){
String mainProductNum = sheet.getRow(i).getCell(6).getStringCellValue().trim();
dre.setMainProductNum(mainProductNum);
}
}
dre.setCreatedBy(userId);
dre.setCreatedTime(new Date());
dre.setUpdatedBy(userId);
dre.setUpdatedTime(new Date());
addList.add(dre);
}else {
continue;
}
}
//插入数据
if(addList.size() > 0){
try {
dataSolidWasteDao.insertBatch(addList);
map.put("code",Constant.TOKEN_CHECK_SUCCESS);//成功 0
map.put("msg","导入成功!");
resList.add(map);
}catch (Exception e){
e.printStackTrace();
map.put("code",Constant.SERVER_ERROR);//服务端错误 50000
map.put("msg","导入数据异常,请联系管理员!");
resList.add(map);
return map;
}
}
return map;
}
vue前端调用
<el-upload class="upload-demo import"
:action="后台接口"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
:on-progress="uploading"
name="file"
:http-request="importExcel"
multiple
>
<el-button type="success">导入</el-button>
</el-upload>
本文地址:https://blog.csdn.net/weixin_44378416/article/details/112005355