读取excel批量生成二维码
昨天工作需要,让生成二维码,让用草料生成,就需要一个个的复制粘贴,有点麻烦.关键是量特别大,如果传统的复制粘贴要很长时间才可以.
后来想到用程序生成.于是百度了一下生成二维码的方法,别说还很简单,把代码粘上,运行一下,竟然真的生成了,就是有点瑕疵,稍微调整一下就好了.
再找了一下读取excel的方法,粘上代码,导入jar包,稍微改造一下,竟然也可以用,于是就把二者 合二为一,循环了一下,就可以批量生成二维码了.稍微调试一下,加个logo,测试了一下中文竟然可以用了.
现在就分享一下使用方法.有需要批量生成二维码的朋友,可以拿去用一下.希望有用的朋友给个评论,也好做出相应的改正.
ps:暂时只支持xls格式,如有xlsx格式,请先转换成xls再使用.后续有空闲了再gai
代码如下:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.imageio.ImageIO;import org.apache.commons.lang.StringUtils;import com.swetake.util.Qrcode;import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/** * * @ClassName: CreateQRCode * @Description: 读取excel 批量生成二维码的工具类 * @author A18ccms a18ccms_gmail_com * @date 2017年12月26日 下午1:24:04 * */ public class CreateQRCode { /** * @Title: QRCode * @Description: 生成二维码 * @param @param name 文件名 * @param @param data 二维码信息 * @param @param logoPath 中间logo图片地址 * @param @throws Exception 设定文件 * @return void 返回类型 * @throws */ public void QRCode(String name,String qrData,String logoPath) throws Exception{ Qrcode qrcode = new Qrcode(); qrcode.setQrcodeErrorCorrect('M');//纠错等级(分为L、M、H三个等级) qrcode.setQrcodeEncodeMode('B');//N代表数字,A代表a-Z,B代表其它字符 qrcode.setQrcodeVersion(7);//版本 //设置一下二维码的像素 int width = 280; int height = 280; BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //绘图 Graphics2D gs = bufferedImage.createGraphics(); gs.setBackground(Color.WHITE); gs.setColor(Color.BLACK); gs.clearRect(0, 0, width, height);//清除下画板内容 //设置下偏移量,如果不加偏移量,有时会导致出错。 int pixoff = 2; byte[] d = qrData.getBytes("UTF-8"); if(d.length > 0 && d.length <120){ boolean[][] s = qrcode.calQrcode(d); for(int i=0;i<s.length;i++){ for(int j=0;j<s.length;j++){ if(s[j][i]){ gs.fillRect(j*6+pixoff+3, i*6+pixoff+3, 6, 6); } } } } Image img = ImageIO.read(new File(logoPath)); // 实例化一个Image对象。如果不需要logo 可以去掉这两行代码 gs.drawImage(img, 105, 105, 60, 60, null); // 105,105是距离gs两个边的距离,60,是中间logo的大小 gs.dispose(); bufferedImage.flush(); ImageIO.write(bufferedImage, "png", new File("E:/code/"+name+".png")); } // 去读Excel的方法readExcel,该方法的入口参数为一个File对象 public List<Map<String, String>> readExcelWrite(File file) { InputStream is = null; List<Map<String, String>> list = new ArrayList<>(); try { // 创建输入流,读取Excel is = new FileInputStream(file.getAbsolutePath()); // jxl提供的Workbook类 Workbook wb = Workbook.getWorkbook(is); // Excel的页签数量 int sheet_size = wb.getNumberOfSheets(); for (int index = 0; index < sheet_size; index++) { // 每个页签创建一个Sheet对象 Sheet sheet = wb.getSheet(index); // sheet.getRows()返回该页的总行数 //第一行为表头行,不需要读取,故从1开始,及第二行开始读取 for (int i = 1; i < sheet.getRows(); i++) { // sheet.getColumns()返回该页的总列数 //列数从0开始,0位第一列,A列 String name = sheet.getCell(0, i).getContents(); String data = sheet.getCell(1, i).getContents(); Map<String, String> map = new HashMap<>(); map.put("name", name); map.put("data", data); list.add(map); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { // 记得关闭流 if (null != is) { is.close(); } } catch (Exception e) { e.printStackTrace(); } } return list; }
public static void main(String[] args) throws Exception{ File file = new File("E:/code/a1111.xls");//读取excel并解析出返回的内容暂时不支持 xlsx格式,请自行改成xlsList<Map<String, String>> list = readExcelWrite(file);if (null != list && list.size() > 0) {for (Map<String, String> map : list) {String name = map.get("name");String data = map.get("data");if (StringUtils.isNotEmpty(name)&& StringUtils.isNotEmpty(data)) {//调用生成二维码方法QRCode(name, data,"E:/code/20170911174614244.png");}}}}
jar包下载地址:点击打开链接 http://download.csdn.net/download/dejie0806/10173715 生成的二维码实例如下. 一定要注意一下,所要生成二维码图片的大小,相应的调整logo的位置.
读取excel批量生成二维码相关推荐
- 速码工具箱,Excel批量生成二维码,瞬间搞定!
之前写过一篇文章,<批量生成二维码>,当时介绍了VBA中两种生成二维码的方式,一种需要引用QRmaker控件,一种是纯代码生成的方式.但是这两种方式都有一个最大的bug--不支持64位. ...
- 如何从Excel表格导入数据批量生成二维码
目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...
- 如何从Excel表格导入数据批量生成二维码 1
目前二维码应用渐趋广泛,二维码具有储存量大.保密性高.追踪性高.抗损性强.备援性大.成本便宜等特性,这些特性特别适用于表单.安全保密.追踪.证照.存货盘点.资料备援等方面.那么我们怎么用条码打印软件从 ...
- springboot+hutool批量生成二维码压缩导出
文章目录 1.引入依赖 2.测试编码 3.批量生成 4.解析excel 5.批量图片压缩 6.上传excel直接将输出流转成压缩包 1.引入依赖 <!-- 生成二维码依赖--><de ...
- TXT文件批量生成二维码
大多数人在制作标签时,数据库文件都选择Excel文件,其实TXT文件在作为数据库时,也是可以制作各种可变数据标签的,比如批量生成二维码,条形码等.下面我们就使用TXT文件作为数据库批量生成二维码. 打 ...
- 通过数据库批量生成二维码
我们在使用条码标签软件时,如果需要批量生成二维码,可以通过添加数据库的方式来操作.而且条码软件支持的数据库文件类型也很广泛,可以满足不同用户的需求.下面我们就用一个例子来详细介绍,比如我们这里有一个E ...
- 批量生成二维码系统源码 电脑+手机自适应代码 含安装搭建教程
分享一个批量生成二维码系统源码,一键批量生成包括网址,数字,文字,视频等各种形式的二维码,自动生成压缩包,一键下载.电脑+手机自适应代码,含安装搭建教程. 批量生成二维码系统源码帮助用户快速生成二维码 ...
- 一句代码生成二维码,一句代码生成条形码,批量生成二维码和条形码,步骤教学
生产企业或者物流快递需要用到大量的二维码和条形码,但是要自行编写代码批量生成二维码或者条形码并不容易,涉及的知识面很广. Excel插件<E灵>提供了二维码接口和条形码接口,您只需要一句代 ...
- 批量生成二维码——《超级处理器》应用
二维码我们在生活工作中经常用到,但怎么批量生成自己的二维码呢,Excel自身没有这样的功能,<超级处理器>可以解决这个问题,我们来做看下,具体怎么做: 第一步,①打开超级处理器菜单=> ...
最新文章
- Inside Dynamics Axapta源代码赏析(五)
- UA MATH563 概率论的数学基础 鞅论初步4 Radon-Nikodym定理,条件期望的存在唯一性
- 鏖战双十一-阿里直播平台面临的技术挑战
- Dynamics AX 2012–HR-离职
- 关于tomcat的思考
- 《Java虚拟机原理图解》1.1、class文件基本组织结构
- 阶段3 1.Mybatis_09.Mybatis的多表操作_1 mybatis表之间关系分析
- 速达pro服务器显示试用,速达v3-pro商业版突然变成试用版了,加密狗的灯不亮了,是什么原因- _0...
- 牛客小白月赛2 J.美
- 移动端H5页面,通过点击软键盘搜索按钮实现搜索功能
- php获取h5视频直链,一种H5播放实时视频的方法与系统与流程
- 密码学技术如何选型?终探量子计算通信的安全模型|第6论
- Flume安装部署,采集方案配置文件编写案例,启动agent采集数据
- 几种for循环用法详解。
- 程序员如何选择技术方向
- 数据库双活和ALWAYSON相比的四大优势
- php 生成8位数唯一的激活码
- perl unicode
- 2.0 JAVA线性表
- java计算机毕业设计库存管理系统源码+系统+数据库+lw文档+mybatis+运行部署
热门文章
- 蠕虫和从传统计算机病毒的区别主要体现在,蠕虫和传统计算机病毒的区别 病毒蠕虫和特洛伊木马...
- RxJava过滤操作符 filter
- 平安科技Java后台开发面试
- 【java】eclipse
- 如何在微信小程序里实现聊天室功能?
- matmul product(一般矩阵乘积),hadamard product(哈达玛积)、kronecker product(克罗内克积)
- Canence第5篇之用IPC-7351 LP Wizard生成PCB lib
- gfp_mask是0代表什么?
- 编曲录音宿主软件-Cubase Elements 11 v11.0.30 WiN 元素版
- WebRequest、WebResponse的使用示例