文章目录

  • 1.引入依赖
  • 2.测试编码
  • 3.批量生成
  • 4.解析excel
  • 5.批量图片压缩
  • 6.上传excel直接将输出流转成压缩包

1.引入依赖

<!--        生成二维码依赖--><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><!--        工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.14</version></dependency>

2.测试编码

      QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距config.setMargin(3);
// 设置前景色,既二维码颜色(青色)config.setForeColor(Color.CYAN);
// 设置背景色(灰色)config.setBackColor(Color.GRAY);
// 生成二维码到文件,也可以到流QrCodeUtil.generate("12345678", config, FileUtil.file("E:/image/12345678.jpg"));


3.批量生成


然而我们要批量生成不可能完全靠手输,接下来实现导入excel表批量生成。
需要引入poi依赖:

4.解析excel

<!--        office文件处理依赖--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version></dependency>

准备好一份表格:

测试读取:

5.批量图片压缩

单张图片输出或下载也不方便,这时候我们要用到压缩

批量导出压缩文件


代码如下

 /*** 将文件打包成zip并下载*/@PostMapping(value = "xiazai",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)@ApiOperation("导出压缩包")public void download(HttpServletResponse response) throws IOException {response.setHeader("content-type", "application/octet-stream");response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setContentType("application/octet-stream");response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=download.zip");CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, ArchiveStreamFactory.ZIP,response.getOutputStream()).add(FileUtil.file("E:/image"));
//        ZipUtils.pngZip(response.getOutputStream(), qrImages);}

6.上传excel直接将输出流转成压缩包

尝试上传excel生成二维码压缩包并下载(不会在服务器生成文件)


代码如下:

/*** 图片内容与名字*/
@Data
public class QrImage {private byte[] bytes;private String name;
}
 /*** 将生成的二维码字节流压缩导出* @param outputStream* @param qrImages*/public static void pngZip(OutputStream outputStream,List<QrImage> qrImages) {//Zip输出流ZipOutputStream zipOutputStream = null;try {zipOutputStream = new ZipOutputStream(outputStream);for (QrImage file : qrImages) {ZipEntry zipEntry = new ZipEntry(file.getName()+".png");zipOutputStream.putNextEntry(zipEntry);//写数据zipOutputStream.write(file.getBytes(), 0, file.getBytes().length);zipOutputStream.flush();}zipOutputStream.flush();zipOutputStream.close();} catch (IOException e) {e.printStackTrace();} finally {// 关闭流try {if (zipOutputStream != null) {zipOutputStream.close();}if (outputStream != null) {outputStream.close();}} catch (IOException e) {e.printStackTrace();}}}
  /*** 将文件打包成zip并下载*/@PostMapping(value = "xiazai",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)@ApiImplicitParam(name = "excelFile",value = "excel导入",required = true,dataType="MultipartFile",allowMultiple = true,paramType = "query")@ApiOperation("导出压缩包")public void download(@RequestParam("excelFile") MultipartFile file, HttpServletResponse response) throws IOException {//读取excelExcelReader reader = ExcelUtil.getReader(file.getInputStream());List<List<Object>> lists = reader.read();//删除标题lists.remove(0);//批量生成二维码List<QrImage> qrImages = create(lists);response.setHeader("content-type", "application/octet-stream");response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");response.setContentType("application/octet-stream");response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=download.zip");
//        CompressUtil.createArchiver(CharsetUtil.CHARSET_UTF_8, ArchiveStreamFactory.ZIP,response.getOutputStream())
//                .add(FileUtil.file("E:/image"));ZipUtils.pngZip(response.getOutputStream(), qrImages);}public List<QrImage> create(List<List<Object>> list) throws FileNotFoundException {QrConfig config = new QrConfig(300, 300);
// 设置边距,既二维码和背景之间的边距config.setMargin(3);
// 设置前景色,既二维码颜色(青色)config.setForeColor(Color.CYAN);
// 设置背景色(灰色)config.setBackColor(Color.GRAY);byte[] bytes=null;List<QrImage> qrImages = new ArrayList<>();QrImage qrImage;
// 生成二维码到文件,也可以到流for (List<Object> objects : list) {//将首列作为二维码内容qrImage = new QrImage();//将首列作为二维码内容bytes = QrCodeUtil.generatePng(objects.get(0).toString(),config.setImg("E:/image/logo.png"));qrImage.setBytes(bytes);qrImage.setName(objects.get(0).toString());qrImages.add(qrImage);}return qrImages;}

springboot+hutool批量生成二维码压缩导出相关推荐

  1. 2023最新在线批量生成二维码网站源码+全开源/UI简约

    正文: 在线批量生成二维码网站源码,直接拖服务器就能运行php7.3,程序采用本地接口支持生成接口,生成后自动保存,生成后压缩保存,具体功能可以自己测试,源码无加密. 程序: wwxhes.lanzo ...

  2. vue批量生成二维码,打印生成的二维码,并批量下载生成的二维码,qrcode

    通过使用 qrcode 生成二维码, 使用 jszip 打包批量二维码文件, 使用 file-saver 下载打包好的zip文件, 使用 vue-print-nb 打印生成的二维码 生成二维码: 打印 ...

  3. 前端批量生成二维码并打包下载

    前端批量生成二维码并打包下载 项目中遇到一个紧急需求在没有后端配合的情况下,前端独自实现生成二维码并打包下载 生成二维码:下载 qrcodejs2 批量打包下载:下载 JSZip 和 FileSave ...

  4. TXT文件批量生成二维码

    大多数人在制作标签时,数据库文件都选择Excel文件,其实TXT文件在作为数据库时,也是可以制作各种可变数据标签的,比如批量生成二维码,条形码等.下面我们就使用TXT文件作为数据库批量生成二维码. 打 ...

  5. 读取excel批量生成二维码

    昨天工作需要,让生成二维码,让用草料生成,就需要一个个的复制粘贴,有点麻烦.关键是量特别大,如果传统的复制粘贴要很长时间才可以. 后来想到用程序生成.于是百度了一下生成二维码的方法,别说还很简单,把代 ...

  6. 速码工具箱,Excel批量生成二维码,瞬间搞定!

    之前写过一篇文章,<批量生成二维码>,当时介绍了VBA中两种生成二维码的方式,一种需要引用QRmaker控件,一种是纯代码生成的方式.但是这两种方式都有一个最大的bug--不支持64位. ...

  7. 如何从Excel表格导入数据批量生成二维码

    目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...

  8. 通过数据库批量生成二维码

    我们在使用条码标签软件时,如果需要批量生成二维码,可以通过添加数据库的方式来操作.而且条码软件支持的数据库文件类型也很广泛,可以满足不同用户的需求.下面我们就用一个例子来详细介绍,比如我们这里有一个E ...

  9. 批量生成二维码系统源码 电脑+手机自适应代码 含安装搭建教程

    分享一个批量生成二维码系统源码,一键批量生成包括网址,数字,文字,视频等各种形式的二维码,自动生成压缩包,一键下载.电脑+手机自适应代码,含安装搭建教程. 批量生成二维码系统源码帮助用户快速生成二维码 ...

最新文章

  1. 嵌入式传感器是智能移动增长的关键
  2. 第6章——广度优先搜索
  3. 双非高校浙工大,一年2项研究上Nature,校友纷纷打Call:欠一个211名头
  4. python 绘制柱状图-「Python」python绘制图表
  5. Android Virtual Device(AVD)屏幕大小调整
  6. 提单丢失了,怎么办?
  7. hashlib 加密
  8. Python程序开发——第六章 类与对象
  9. [Ubuntu] Simple way to pass passwords on a shell script
  10. 计算机的只读储存器,只读存储器
  11. Spark源码走读1——RDD
  12. 入选 Gartner 魔力象限,剖析华为云 GaussDB 数据库演进之路
  13. linux shell 判断ELF文件,linux file命令查看elf文件信息
  14. tinymce上传图片php,在angular2中使用tinymce富文本编辑,并实现上传图片功能
  15. 晶振电路电容选取的计算方法
  16. SpringBoot exclude的使用
  17. 再见python你好go语言_再见,Python。你好,Go语言。
  18. “如果不是生活所迫,谁又愿意拿青春赌明天呢”一位年新30w测试工程师的自白
  19. 名帖366 鲜于枢 草书《韩愈石鼓歌》
  20. axis2 webService开发 附深入理解 Java 垃圾回收机制

热门文章

  1. mysql数据库查询工具''_数据库查询工具
  2. Fatal error loading the DB: Permission denied. Exiting.
  3. 三运放差分放大电路分析_三运放组成的差分放大器电路图及特点
  4. GitHub 上受欢迎的 Android UI Library(part_one)
  5. rm -rf是什么意思?
  6. 人生若只如初见服务器维护,「北京服务器」人生若只如初见
  7. 川藏北线-成都老茶馆叹茶
  8. MySQL索引及视图
  9. 腾讯云服务器登录宝塔面板命令
  10. h5 换脸 php,DIY海报H5案例|换脸show颜值