最近写了一个业务,用到一些比较实用的工具记录下。

List<RobotCard> robotCardList = null;
if (BizRouteEnum.ROUTE_1.getRouteCode().equals(param.getExportModel())){ //1按条件导出,否则按给定数据导出
RobotCard robotCardParam = BeanUtil.toBean(map, RobotCard.class);
robotCardList = this.searchList(robotCardParam);
} else {
List<Long> ids = param.getIds();
RobotAssert.notNull(ids, "请选择需要导出的数据。");
robotCardList = this.selectBatchIds(ids);
} RobotAssert.notNull(robotCardList, "无有效数据。"); ArrayList<Map<String, Object>> rows = new ArrayList<>();
robotCardList.forEach(rc -> {
Map<String, Object> col = new LinkedHashMap<>();
col.put("编号", rc.getId().toString());
col.put("金额", rc.getCardAmount());
col.put("密码", rc.getPayPasswd());
rows.add(col);
}); ExcelWriter excelWriter = ExcelUtil.getWriter();
excelWriter.setColumnWidth(0, 30);
excelWriter.write(rows); ByteArrayOutputStream baos = new ByteArrayOutputStream();
excelWriter.flush(baos);
excelWriter.close(); ByteArrayOutputStream bos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(bos, Charset.defaultCharset()); //添加xls
try {
jodd.io.ZipUtil.addToZip(zos, baos.toByteArray(), "制卡数据.xls", "制卡数据");
} catch (Exception e1) {
LOGGER.error("文件压缩失败。", e1);
} robotCardList.forEach(card -> {
//生产二维码
QrConfig config = new QrConfig(300, 300);
config.setCharset(Charset.forName("utf-8"));
String cardId = card.getId().toString(); byte[] data = QrCodeUtil.generatePng(cardId, config); //压缩
try {
jodd.io.ZipUtil.addToZip(zos, data, cardId.concat(CommonConstant.PNG), cardId);
} catch (Exception e) {
LOGGER.error("文件压缩失败。", e);
}
}); try {
zos.finish();
zos.close();
} catch (Exception e) {
LOGGER.error("压缩流关闭失败。", e);
} //上传
ByteArrayInputStream in = new ByteArrayInputStream(bos.toByteArray());
String url = oSSClientUtil.putObjectForInputStream(
OssConstant.PAYMENT_TEMP.concat(DateUtil.format(DateUtil.date(),
DatePattern.PURE_DATETIME_PATTERN)).concat(CommonConstant.PNG), in);

  

使用hutool工具导出excel,使用jodd工具压缩流,使用oss上传流的更多相关文章

  1. Workbook导出excel封装的工具类

    在实际中导出excel非常常见,于是自己封装了一个导出数据到excel的工具类,先附上代码,最后会写出实例和解释.支持03和07两个版本的 excel. HSSF导出的是xls的excel,XSSF导 ...

  2. 导入导出Excel的Java工具类ExcelUtil

    在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单 ...

  3. 分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求

    获取该FileUtil工具类具体演示,公众号内回复fileutil20200501即可. package com.example.demo.util; import javax.servlet.htt ...

  4. redisTemplate实现轻量级消息队列, 异步处理excel并实现腾讯云cos文件上传下载

    背景 公司项目有个需求, 前端上传excel文件, 后端读取数据.处理数据.返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可能十分耗时, 没 ...

  5. 能不能支持在线查看word,excel这样的文件?还有拖拽上传功能?

    https://forum.enhancer.io/topic/5adea0cdce69735af635fcd8 方法1. 用一个自定义窗口, 自定义窗口里放一个iframe 假设你的 word 的地 ...

  6. NPOI操作EXCEL(四)——反射机制批量导出excel文件

    前面我们已经实现了反射机制进行excel表格数据的解析,既然有上传就得有下载,我们再来写一个通用的导出方法,利用反射机制实现对系统所有数据列表的筛选结果导出excel功能. 我们来构想一下这样一个画面 ...

  7. springmvc 导出excel

    1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  8. ArcGis使用字段别名Alias Name导出Excel

    在ArcMap10.3+(根据官网描述应该是,作者测试使用10.5,可行)以后的版本,可以使用ArcToolbox工具导出Excel. 工具位置ConversionTools——Excel——Tabl ...

  9. 如何用poi生成导出excel

    import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Sheet; import java. ...

随机推荐

  1. xxl-job使用遇到的问题

    1.背景 最近公司在迁移定时任务,以前老的定时任务是基于quartz搭建的分布式集群服务,遇到如下几个瓶颈问题: 同一个任务只能有一个节点运行,其他节点不执行,导致性能低,资源也浪费 定时任务在抢占执 ...

  2. 20192113 2020-2021-2 《Python程序设计》实验三报告

    20192113 2020-2021-2 <Python程序设计>实验三报告 课程:<Python程序设计> 班级: 1921 姓名: 衣丽莎 学号:20192113 实验教师 ...

  3. IDEA 通过ctrl+滚轮缩放字体大小

    能用图解决的问题,尽量简单粗暴通俗易懂 1.第一种方式 2.第二种方式

  4. Springboot单元测试@RunWith注解

    1.RunWith 注解 RunWith 就是一个运行器 可以在单元测试的时候,自动创建spring的应用上下文 2.正确使用 pom.xml <dependency> <group ...

  5. 摄像头PVD和CVD薄膜

    摄像头PVD和CVD薄膜 在FDP 的生产中,在制作无机薄膜时,可以采用的方法有两种:PVD 和CVD (将VE 和VS 归于PVD ,而ALD 归于CVD). Physical Vapor Depo ...

  6. CMOS图像传感器理解

    CMOS图像传感器理解 水流方向从左边流向右边,上面有一个开关,拧下去的时候水流停止,拧上去的时候水流打开.左边是水流的源头我们给它起个名字,叫做源端(就是源头的意思嘛),右边是水流出去的地方,也就是 ...

  7. 24GHz和77GHz毫米波雷达技术细节

    24GHz和77GHz毫米波雷达技术细节 FMCW Radar Sensitivity Measurement Tech Field Test and Raw Data Analysis Capabi ...

  8. 预测汽车级Linux专业技术的需求

    预测汽车级Linux专业技术的需求 Anticipating need for Automotive Grade Linux expertise 在听了多年汽车级Linux(AGL)及其所有潜力之后, ...

  9. 阿里云视频云 Retina 多媒体 AI 体验馆开张啦!

    带你体验视频更多可能 海量视频管理难度大?翻库检索特定人物费时费力?视频内容剪辑效率低?您的得力助手"Retina多媒体AI"体验馆已上线.带你感受视频AI黑科技,开启极致智能体验 ...

  10. PTA7~9题目集总结与归纳

    前言: 总结三次题目集的知识点.题量.难度等情况. 目录: 题目集7(7-1).(7-2)两道题目的递进式设计分析总结 题目集8和题目集9两道ATM机仿真题目的设计思路分析总结 一. 题目集7(7-1 ...