导入导出excel:使用若依自带的工具ExcelUtil;(例子:SysUserController)
导入之前需要生成一个excel模板给用户填写(前端通过接口获取模板名字,再调用下载接口common/download,进行下载);
导入业务根据若依的SysUserServiceImpl的“导入用户数据”进行复制修改,我这里的更新数据库操作写固定更新;
导出业务根据学校ID导出,输入学校ID查不到时返回查到的数据为空,而不会生成excel空表(前端通过接口获取文件名,再调用下载接口common/download,进行下载)。

ExcelUtil多加了返回对象Result

这里只给出Controller层的代码,ServiceImpl可以仿照若依自带的SysUserServiceImpl。

学生模板Controller

   /*** 学生模板**/@ApiOperation(value = "学生Excel模板", notes = "学生Excel模板")@GetMapping("/importStuTemplate")public Result importStuTemplate(){ExcelUtil<StuEpiRequest> util = new ExcelUtil<StuEpiRequest>(StuEpiRequest.class);return util.importTemplateExcelResult("学生模板");}

导入Controller

   /*** 导入excel信息** @author makejava* @date 2022-07-12 16:01:38**/@ApiOperation(value = "导入excel信息", notes = "导入职工excel信息")@ApiImplicitParams({@ApiImplicitParam(name = "CompanyId", value = "学校id", paramType = "query", dataType = "Long"),@ApiImplicitParam(name = "CompanyName", value = "学校名称", paramType = "query", dataType = "String"),@ApiImplicitParam(name = "Type", value = "身份,0是学生,1是教职工", paramType = "query", dataType = "String"),
//            @ApiImplicitParam(name = "isUpdateSupport", value = "支持更新,0是不支持,1是支持", paramType = "query", dataType = "String"),})@PostMapping("/import")public Result importExcel (@RequestPart("file") MultipartFile file ,@Valid EpiPreModel epiPreModel) throws Exception {ExcelUtil<EpiPreModel> util = new ExcelUtil<EpiPreModel>(EpiPreModel.class);List<EpiPreModel> epiList = util.importExcel(file.getInputStream());String message = epiPreService.importExcel(epiList,epiPreModel);return Result.success(message);}

导出Controller

   /*** 导出学生excel信息**/@ApiOperation(value = "导出学生excel信息", notes = "导出学生excel信息")@ApiImplicitParam(name = "companyId", value = "学校id", paramType = "query", dataType = "Long")@GetMapping("/stuExport/{companyId}")public Result stuExport(@PathVariable Long companyId) {List<StuEpiResponse> list =  epiPreService.exportStuExcel(companyId);if (StringUtils.isEmpty(list)){return Result.failed("根据学校id查得数据为空");}ExcelUtil<StuEpiResponse> util = new ExcelUtil<StuEpiResponse>(StuEpiResponse.class);return  util.exportExcelResult(list,"学生表","学生表");}

ExcelUtil.java

这里我自己改了Result的返回对象。如果对返回无具体要求,使用ruoyi原本的exportExcel() 和importTemplateExcel()方法就可以,返回的是AjaxResult

/*** 对list数据源将其里面的数据导入到excel表单** @param list 导出数据集合* @param sheetName 工作表的名称* @param title 标题* @return 结果*/public Result exportExcelResult(List<T> list, String sheetName, String title){this.init(list, sheetName, title, Type.EXPORT);return exportExcelResult();}/*** 对list数据源将其里面的数据导入到excel表单** @return 结果*/public Result exportExcelResult(){OutputStream out = null;try{writeSheet();String filename = encodingFilename(sheetName);out = new FileOutputStream(getAbsoluteFile(filename));wb.write(out);return Result.success(filename);}catch (Exception e){log.error("导出Excel异常{}", e.getMessage());throw new UtilException("导出Excel失败,请联系网站管理员!");}finally{IOUtils.closeQuietly(wb);IOUtils.closeQuietly(out);}}/*** 对list数据源将其里面的数据导入到excel表单** @param sheetName 工作表的名称* @return 结果*/public Result importTemplateExcelResult(String sheetName){return importTemplateExcelResult(sheetName, StringUtils.EMPTY);}

如果客户需要模板有示例或者需要比较复杂的表格,则不自动生成,自己写设计一个excel,放在服务器上,当前端调用时delete参数为false就可以。

例如下图:需要一个填写示例,身份证固定18位,性别需要下拉框。(有示例时,在impl中需要判断表格第一行的身份证等唯一标识,示例不插入数据库)

若依通用下载接口common/download

package com.ruoyi.web.controller.common;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.ruoyi.common.utils.MD5Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
import com.ruoyi.framework.config.ServerConfig;/*** 通用请求处理* * @author ruoyi*/
@RestController
public class CommonController
{private static final Logger log = LoggerFactory.getLogger(CommonController.class);@Autowiredprivate ServerConfig serverConfig;/*** 通用下载请求* * @param fileName 文件名称* @param delete 是否删除*/@GetMapping("common/download")public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request){try{if (!FileUtils.checkAllowDownload(fileName)){throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));}String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);String filePath = RuoYiConfig.getDownloadPath() + fileName;response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);FileUtils.setAttachmentResponseHeader(response, realFileName);FileUtils.writeBytes(filePath, response.getOutputStream());if (delete==null||delete){FileUtils.deleteFile(filePath);}}catch (Exception e){log.error("下载文件失败", e);}}/*** 通用上传请求*/@PostMapping("/common/upload")public AjaxResult uploadFile(MultipartFile file) throws Exception{try{//文件md5String md5 = MD5Utils.calcMD5(file.getInputStream());// 上传文件路径String filePath = RuoYiConfig.getUploadPath();// 上传并返回新文件名称String fileName = FileUploadUtils.upload(filePath, file);String url = serverConfig.getUrl() + fileName;AjaxResult ajax = AjaxResult.success();ajax.put("fileName", fileName);ajax.put("url", url);ajax.put("md5",md5);return ajax;}catch (Exception e){return AjaxResult.error(e.getMessage());}}/*** 本地资源通用下载*/@GetMapping("/common/download/resource")public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)throws Exception{try{if (!FileUtils.checkAllowDownload(resource)){throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));}// 本地资源路径String localPath = RuoYiConfig.getProfile();// 数据库资源地址String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);// 下载名称String downloadName = StringUtils.substringAfterLast(downloadPath, "/");response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);FileUtils.setAttachmentResponseHeader(response, downloadName);FileUtils.writeBytes(downloadPath, response.getOutputStream());}catch (Exception e){log.error("下载文件失败", e);}}
}

ruoyi导入导出Excel相关推荐

  1. npoi的mvc怎么ajax导出,asp.net mvc利用NPOI导入导出Excel解决方法

    asp.net mvc利用NPOI导入导出Excel 导出Excel 2003没有问题,导出Excel2007老是出现无法访问已关闭的流,请帮忙解决,或是哪位有mvc导入导出excel的工具类能提供, ...

  2. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  3. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  4. 让 .Net 更方便的导入导出 Excel

    让 .Net 更方便的导入导出Excel Intro 因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于 ...

  5. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  6. java导入导出excel_Java导入导出Excel工具 easyexcel

    Java导入导出Excel工具  easyexcel 做Java开发的同学,尤其是做管理后台的同学绝大多数都会接触到报表系统,这时候就少不了Excel的导入和导出了.Java解析生成Excel比较有名 ...

  7. Java导入导出Excel工具类ExcelUtil

    前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hiberna ...

  8. com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格

    这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...

  9. jxl导入/导出excel(网上的案例)

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

最新文章

  1. 检查linux是否安装zlib,Linux下安装zlib
  2. 营销自动化为什么能吸引企业的喜欢?它有何魅力?
  3. Python基础——PyCharm版本——第八章、文件I/O(核心3、csv和excel解析)
  4. c语言变量加常量,C语言(二)---常量与变量(示例代码)
  5. java quartz mybatisplus_Springboot+redis+SpringMVC+Mybatis Plus分布式开发系统源码
  6. JZOJ 3515. 软件公司
  7. Airflow任务调度延时问题分析和优化
  8. Juniper防火墙的日志记录一个的问题
  9. python saveas_如何使用Python SaveAs对话框
  10. 太阳高度角方位角计算
  11. 操练Draco的代码
  12. MFC:读取整个记事本文件
  13. 笔记本电脑上网出现问题的解决方法
  14. Linux系统Word转换PDF,文档字体乱码不显示问题解决
  15. EAP-TLS/EAP-TTLS/EAP-PEAP
  16. 4G/5G无人机/无人车/无人船 远程控制,FPV增程,APM/Pixhawk图传数传一体
  17. 什么是Apptainer?如何在Ubuntu服务器上安装?
  18. 小组取什么名字好_寓意好的公司名字大全 公司名字取什么好
  19. 11款最受欢迎的亚马逊卖家工具
  20. 欧盟委员会获得首个网络安全认证计划

热门文章

  1. 不相交轮换的乘积怎么求_怎么样将一个轮换分解成不相交的轮换的乘积
  2. Linux 管理面板云帮手、APPNODE与宝塔哪个好
  3. Unity SteamVR锁定头盔位置旋转
  4. C语言的s8数据结构
  5. unity:瞄准镜制作
  6. 计算机键盘上每个键的作用
  7. 2023年2.14情人节最浪漫的表白烟花,送给自己的脑婆(源码)
  8. 树莓派如何重新装Linux系统,如何给树莓派Raspberry重新安装修复操作系统
  9. 15元钱一杯咖啡,喝完后两个空杯换一杯,问:你有100元钱,最多可以喝到几杯咖啡
  10. 【从零开始的Java开发】1-5-4 ArrayList、HashSet、HashMap 概述与案例