• Java便捷生成二维码并使用Excel



    1、思路

    第一步生成图片字节数组输出流
    第二步字节数组输出流存入excel

    2、详细过程

    1.引入依赖

    使用的是easyexcel和hutool工具便捷快速开发

            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.8.15</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.22</version>
            </dependency>
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>core</artifactId>
                <version>3.4.1</version>
            </dependency>
            <dependency>
                <groupId>com.google.zxing</groupId>
                <artifactId>javase</artifactId>
                <version>3.4.1</version>
            </dependency>
            <!--阿里巴巴easyexcel工具-->
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel-core</artifactId>
                <version>3.3.2</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>3.3.2</version>
            </dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    2.导出数据

    导出类信息@ContentRowHeight(100) @ColumnWidth(100/6)这两个注解是条件excel行列大小,可以自行调整

    @Getter
    @Setter
    @EqualsAndHashCode
    @ContentRowHeight(100)
    @ColumnWidth(100/6)
    public class ImageDemoData{
    
    
        private byte[] byteArray;
    
    
        private String shortDesc;
        /**
         * 根据文件导出 并设置导出的位置。
         */
        @ExcelIgnore
        private WriteCellData<Void> writeCellDataFile;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    EasyExcel会根据这个实体类来生成表格,可以去官网查看注解注释掉其中的某个属性,每一个属性代表每列的信息。

    @Test
    public void imageWrite() throws Exception {
        String fileName = TestFileUtil.getPath() + "imageWrite" + System.currentTimeMillis() + ".xlsx";
           List<ImageDemoData> list = ListUtils.newArrayList();
            ImageDemoData imageDemoData = new ImageDemoData();
            list.add(imageDemoData);
    		// 创建字节数组输出流
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    		// 调用 QrCodeUtil.generate() 生成二维码,并将结果写入输出流
            QrCodeUtil.generate("helloworld", 300, 300, ImgUtil.IMAGE_TYPE_PNG, outputStream);
    		// 从输出流中获取生成的二维码图像数据
            byte[] qrCodeData = outputStream.toByteArray();
            imageDemoData.setByteArray(qrCodeData);
            imageDemoData.setShortDesc("helloworld");
    		// 关闭输出流
            outputStream.close();
            // 写入数据
            EasyExcel.write(fileName, ImageDemoData.class).sheet().doWrite(list);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    利用 hutools 工具简化开发,生成字符串对应的字节数组输出流,传入easyexcel完成二维码的生成。


  • 相关阅读:
    [附源码]Python计算机毕业设计Django社区人员信息管理系统设计与实现
    【算法学习】LeetCode 724寻找数组的中心下标
    自我解剖与未来展望
    解决websocket使用@Autowired、@Value获取值为null解决方法
    基于SSM的汽车租赁管理系统
    uniapp 复选框样式 修改
    代码随想录算法训练营第五十天 |123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV
    CODEFORCES --- 630A. Again Twenty Five!
    095:vue+openlayers 地图上添加网格线 (示例代码)
    简单的写一个fetch请求数据
  • 原文地址:https://blog.csdn.net/qq_45773419/article/details/132762945