这里用的是easypoi

首先引入jar包

<!-- excel -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>${easypoi.version}</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>${easypoi.version}</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>${easypoi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>
2.业务代码
(1)service接口层代码
/**
* 获取导出列表
* @param jsonParam
* @return
* @throws Exception
*/
Map<String,Object> getDownloadAllStaffWorkers(JSONObject jsonParam )throws Exception;
(2)serviceImpl实现类代码
红色部分是因为要先把文件上传到服务器,然后后端获取,然后再返给前端一个URL。一般不用谢
@Override
public Map<String, Object> getDownloadAllStaffWorkers(JSONObject jsonParam) throws Exception {
String workerName = jsonParam.getString("workerName");
String workerCardNum = jsonParam.getString("workerCardNum");
String workerPhone = jsonParam.getString("workerPhone");
Long allStaffWorkerTypeId = jsonParam.getLong("allStaffWorkerTypeId");
String workerCode = jsonParam.getString("workerCode");
Long sysId = jsonParam.getLong("sysId");
String clzName = "员工表";
String sessionToken = jsonParam.getString("sessionToken");
/*
查询导出员工列表
*/
Example example = new Example(AllStaffWorkers.class);
Example.Criteria criteria = example.createCriteria();
//是否有效:1.有效 2.无效
criteria.andEqualTo("isEnabled", ConstantsConfig.IS_ENABLED_YES);
//是否删除:1未删除 2.已删除
criteria.andEqualTo("isDeleted",ConstantsConfig.IS_DELETED_NO);
criteria.andEqualTo("sysId",sysId);
if (!Strings.isNullOrEmpty("workerName")){
criteria.andLike("workerName",workerName);
}
if (!Strings.isNullOrEmpty(workerCardNum)){
criteria.andEqualTo("workerCardNum",workerCardNum);
}
if (!Strings.isNullOrEmpty(workerPhone)){
criteria.andEqualTo("workerPhone",workerPhone);
}
if (!Strings.isNullOrEmpty(String.valueOf(allStaffWorkerTypeId))){
criteria.andEqualTo("allStaffWorkerTypeId",allStaffWorkerTypeId);
}
if (!Strings.isNullOrEmpty(workerCode)){
criteria.andEqualTo("workerCode",workerCode);
}
List<AllStaffWorkers> allStaffWorkersList = allStaffWorkersMapper.selectByExample(example);
//导出数据
HSSFWorkbook workbook = new HSSFWorkbook();
//声明一个表格
HSSFSheet sheet = workbook.createSheet("员工信息表");
//设置表格的默认宽度
sheet.setDefaultColumnWidth((short) 30);
//需要导出的文件名字
String fileName = clzName + ".xls";
int rowNum = 1;
//导出Excel 表格头部
String [] headers = {"姓名","手机号","身份证号","性别","部门代码","归属部门","上级部门","人员类型","岗位/工种","状态"};
HSSFRow row = sheet.createRow(0);
//在Excel中添加表头
for (int i = 0;i<headers.length;i++){
HSSFCell cell = row.createCell(i);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
HSSFRow row1 = null;
for (AllStaffWorkers allStaffWorkers : allStaffWorkersList){
String workerSex = null;
if (allStaffWorkers.getWorkerSex() == 1){
workerSex = "男";
}else if (allStaffWorkers.getWorkerSex() ==2){
workerSex ="女";
}else{
workerSex = "";
}
row1 = sheet.createRow(rowNum);
row1.createCell(0).setCellValue(allStaffWorkers.getWorkerName());
row1.createCell(1).setCellValue(allStaffWorkers.getWorkerPhone());
row1.createCell(2).setCellValue(allStaffWorkers.getWorkerCardNum());
row1.createCell(3).setCellValue(workerSex);
//组织管理表
Long allStaffOrgId = allStaffWorkers.getAllStaffOrgId();
AllStaffOrg allStaffOrg = new AllStaffOrg();
allStaffOrg.setAllStaffOrgId(allStaffOrgId);
allStaffOrg.setIsDeleted(ConstantsConfig.IS_DELETED_NO);
allStaffOrg.setIsEnabled(ConstantsConfig.IS_ENABLED_YES);
AllStaffOrg allStaffOrg1 = allStaffOrgMapper.selectOne(allStaffOrg); row1.createCell(4).setCellValue(allStaffOrg1.getOrgCode());
row1.createCell(5).setCellValue(allStaffOrg1.getOrgName());
row1.createCell(6).setCellValue(allStaffOrg1.getParentId());
//工种表
allStaffWorkerTypeId = allStaffWorkers.getAllStaffWorkerTypeId();
if (allStaffWorkerTypeId != null){
AllStaffWorkerType allStaffWorkerType = new AllStaffWorkerType();
allStaffWorkerType.setAllStaffWorkerTypeId(allStaffWorkerTypeId);
allStaffWorkerType.setIsDeleted(ConstantsConfig.IS_DELETED_NO);
allStaffWorkerType.setIsEnabled(ConstantsConfig.IS_ENABLED_YES);
AllStaffWorkerType allStaffWorkerType1 = allStaffWorkerTypeMapper.selectOne(allStaffWorkerType);
row1.createCell(7).setCellValue(allStaffWorkerType1.getWorkerTypeName());
row1.createCell(8).setCellValue(allStaffWorkerType1.getWorkerTypeName());
}else {
continue;
}
//字典表
Long dictId = allStaffWorkers.getDictCommId();
if (dictId != null){
DictComm dictComm = new DictComm();
dictComm.setDictId(dictId);
dictComm.setIsDeleted(ConstantsConfig.IS_DELETED_NO);
dictComm.setIsEnabled(ConstantsConfig.IS_ENABLED_YES);
DictComm dictComm1 = dictCommMapper.selectOne(dictComm);
row1.createCell(9).setCellValue(dictComm1.getDictName());
rowNum++;
}else {
continue;
}
}
/*byte[] fileByte = workbook.getBytes();*/
ByteArrayOutputStream os = new ByteArrayOutputStream();
workbook.write(os);
os.toByteArray(); workbook.close();
String httpUrl = null;
String filePath = null;
String url = null;
try {
url = FastDFSUtils.getDoUpload(sessionToken,fileName,os.toByteArray());
}catch (Exception e){
errLog("getDownloadAllStaffWorkers",ErrorCodeMsg.UNKNOWN_ERROR.getMessage(),"获取文件服务下载地址为空");
throw new AttemptException(ErrorCodeMsg.UNKNOWN_ERROR,"获取文件服务下载地址为空");
}
if (StringUtils.isNotEmpty(url)) {
JSONObject jsonObject = JSONObject.parseObject(url);
String data = jsonObject.getString("data");
JSONObject dataObject = JSONObject.parseObject(data);
httpUrl = dataObject.getString("httpUrl");
filePath = dataObject.getString("filePath");
if (StringUtils.isEmpty(filePath)) {
errLog("getDownloadTrainStuEnroll", ErrorCodeMsg.UNKNOWN_ERROR.getMessage(), "获取文件服务下载地址为空2");
throw new AttemptException(ErrorCodeMsg.UNKNOWN_ERROR, "获取文件服务下载地址为空2");
}
}
System.out.println(url);
Map<String,Object> map = new HashMap<>();
map.put("url",fileServer + "/" + filePath);
map.put("attname",fileName);
return map;
}
(3)Controller层代码
/**
* 下载员工
* @param request
* @param jsonParam
* @param requestUser
* @return
* @throws Exception
*/
@PostMapping("/getDownloadAllStaffWorkers")
public ResponseStruct getDownloadAllStaffWorkers(HttpServletRequest request,@RequestBody JSONObject jsonParam,@ModelAttribute RequestUser requestUser)throws Exception{
Long sysId = requestUser.getSysid();
String sessionToken = request.getHeader(ConstantsConfig.ACCESS_TOKEN_KEY);
jsonParam.put("sysId",sysId);
jsonParam.put("sessionToken",sessionToken);
Map<String,Object> map = allStaffWorkersInterface.getDownloadAllStaffWorkers(jsonParam);
return ResponseStruct.success(map);
} 注:因为前端框架是vue架构师考虑到整体文件的管理,所以这里面都要先把文件上传到fastdns服务器然后再进行处理。之前写过简单的。喜欢的点个赞谢谢!
 

完整版EXCEL导出 (大框架SpringCloud 业务还是Springboot一套)的更多相关文章

  1. 完整版excel上传导入读写批量数据并将反馈结果写入远程exel中

    思路:excel的读写借助于poi框架,在写入远程的时候,是不能直接写入的,本博主将传入的文件再次拉下来写到项目临时文件中,然后,在临时文件中写入,然后,以同样的名称路径覆盖掉远程的就可以了,稍微有点 ...

  2. 二十六、【开源框架】EFW框架Winform前端开发之Grid++Report报表、条形码、Excel导出、图表控件

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  3. C#通过OLEDB导出大数据到Excel

    C#导出数据到Excel,基本有两种方法,一种方法是通过Microsoft.Office.Interop.Excel.Application,一行一列的写入Excel中:另一种方法是通过OLEDB,利 ...

  4. Winform .NET 利用NPOI导出大数据量的Excel

    前言:公司让做一个导出数据到Excel的小工具,要求是用户前端输入sql语句,点击导出按钮之后,将数据导出到Excel,界面如图所示:文件下端显示导出的进度 遇到的问题: 1.使用NPOI进行Exce ...

  5. abp框架Excel导出——基于vue

    abp框架Excel导出--基于vue 目录 abp框架Excel导出--基于vue 1.技术栈 1.1 前端采用vue,官方提供 1.2 后台是abp--aspnetboilerplate 2. E ...

  6. yii框架 excel导出

    环境: yii框架 basic版 1.下载 PHPexcel  (我用的是PHPExcel-1.8.1) 2.将下载的文件夹 (PHPExcel-1.8.1)放至 vender下  (路径:basic ...

  7. 阿里云96页报告详解《云上转型》(10个案例、10大趋势/完整版PPT)

    阿里云96页报告详解<云上转型>(10个案例.10大趋势/完整版PPT) 2017-12-29 14:20阿里云/云计算/技术 ﹃产业前沿超级干货﹄ ﹃数据观○重磅速递﹄ 阿里云研究中心云 ...

  8. poi 操作Excel 以及大数据量导出

    maven 依赖 (版本必须一致,否则使用SXSSFworkbook 时程序会报错) <dependency> <groupId>org.apache.poi</grou ...

  9. MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)

    MySql数据库导出完整版(导出数据库,导出表,导出数据库结构) 用MySqlCE导出数据库脚本时,如数据库中包含中文内容,则导出异常. 现在可以通过mysqldump.exe直接导出数据库脚本步骤如 ...

随机推荐

  1. Hibernate/JPA中@Where使用时注意

    在使用Hibernate或者JPA时,我们经常会使用@Where注解实现查询过滤,在实体类上.实体属性上.查询语句上都有应用. 例如: @Where(clause = "status != ...

  2. Java 的 ArrayList 的底层数据结构

    1. 数据结构--ArrayList源码摘要 ublic class ArrayList<E> extends AbstractList<E> implements List& ...

  3. Klotski's Blog

    教材: 唐朔飞 编著 "计算机组成原理(第2版)"高等教育出版社 2008年1月 习题指导教材: 唐朔飞 编著 "计算机组成原理–学习指导与习题解答(第2版)" ...

  4. 吴裕雄--天生自然python学习笔记:python爬虫与网页分析

    我们所抓取的网页源代码一般都是 HTML 格式的文件,只要研究明白 HTML 中 的标签( Tag )结构,就很容易进行解析并取得所需数据 . HTML 网页结构 HTML 网 页是由许多标签( Ta ...

  5. python3下scrapy爬虫(第四卷:初步抓取网页内容之抓取网页里的指定数据延展方法)

    上卷中我运用创建HtmlXPathSelector 对象进行抓取数据: 现在咱们再试一下其他的方法,先试一下我得最爱XPATH 看下结果: 直接打印出结果了 我现在就正常拼下路径 只求打印结果: 现在 ...

  6. Python之configparser配置文件的读取

    配置文件名 config.ini 文件内容: [linux] ip:10.0.13.26 port:22 username:root password:W2ynE6b58wheeFho [mysql] ...

  7. java实现树的一般操作

    https://www.cnblogs.com/dawnyxl/p/9047437.html 树是数据结构中最基本的结构,今天的博客更新一下树的基本操作: 树的节点结构: package tree; ...

  8. Ionic3 Demo

    本文为原创文章,转载请标明出处 最近又开源了一个小 Demo,基于 Ionic 3.9.2.注册登录功能使用的是 WildDog 野狗通信云,大家可以放心的注册登录玩.电影相关数据来源自"某 ...

  9. 吴裕雄--天生自然python编程:turtle模块绘图(2)

    #彩色螺旋线 import turtle import time turtle.pensize(2) turtle.bgcolor("black") colors = [" ...

  10. python中字符串操作--截取,查找,替换

    python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...