昨天工作需要,让生成二维码,让用草料生成,就需要一个个的复制粘贴,有点麻烦.关键是量特别大,如果传统的复制粘贴要很长时间才可以.

后来想到用程序生成.于是百度了一下生成二维码的方法,别说还很简单,把代码粘上,运行一下,竟然真的生成了,就是有点瑕疵,稍微调整一下就好了.

再找了一下读取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批量生成二维码相关推荐

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

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

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

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

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

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

  4. springboot+hutool批量生成二维码压缩导出

    文章目录 1.引入依赖 2.测试编码 3.批量生成 4.解析excel 5.批量图片压缩 6.上传excel直接将输出流转成压缩包 1.引入依赖 <!-- 生成二维码依赖--><de ...

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

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

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

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

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

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

  8. 一句代码生成二维码,一句代码生成条形码,批量生成二维码和条形码,步骤教学

    生产企业或者物流快递需要用到大量的二维码和条形码,但是要自行编写代码批量生成二维码或者条形码并不容易,涉及的知识面很广. Excel插件<E灵>提供了二维码接口和条形码接口,您只需要一句代 ...

  9. 批量生成二维码——《超级处理器》应用

    二维码我们在生活工作中经常用到,但怎么批量生成自己的二维码呢,Excel自身没有这样的功能,<超级处理器>可以解决这个问题,我们来做看下,具体怎么做: 第一步,①打开超级处理器菜单=> ...

最新文章

  1. Inside Dynamics Axapta源代码赏析(五)
  2. UA MATH563 概率论的数学基础 鞅论初步4 Radon-Nikodym定理,条件期望的存在唯一性
  3. 鏖战双十一-阿里直播平台面临的技术挑战
  4. Dynamics AX 2012–HR-离职
  5. 关于tomcat的思考
  6. 《Java虚拟机原理图解》1.1、class文件基本组织结构
  7. 阶段3 1.Mybatis_09.Mybatis的多表操作_1 mybatis表之间关系分析
  8. 速达pro服务器显示试用,速达v3-pro商业版突然变成试用版了,加密狗的灯不亮了,是什么原因- _0...
  9. 牛客小白月赛2 J.美
  10. 移动端H5页面,通过点击软键盘搜索按钮实现搜索功能
  11. php获取h5视频直链,一种H5播放实时视频的方法与系统与流程
  12. 密码学技术如何选型?终探量子计算通信的安全模型|第6论
  13. Flume安装部署,采集方案配置文件编写案例,启动agent采集数据
  14. 几种for循环用法详解。
  15. 程序员如何选择技术方向
  16. 数据库双活和ALWAYSON相比的四大优势
  17. php 生成8位数唯一的激活码
  18. perl unicode
  19. 2.0 JAVA线性表
  20. java计算机毕业设计库存管理系统源码+系统+数据库+lw文档+mybatis+运行部署

热门文章

  1. 蠕虫和从传统计算机病毒的区别主要体现在,蠕虫和传统计算机病毒的区别 病毒蠕虫和特洛伊木马...
  2. RxJava过滤操作符 filter
  3. 平安科技Java后台开发面试
  4. 【java】eclipse
  5. 如何在微信小程序里实现聊天室功能?
  6. matmul product(一般矩阵乘积),hadamard product(哈达玛积)、kronecker product(克罗内克积)
  7. Canence第5篇之用IPC-7351 LP Wizard生成PCB lib
  8. gfp_mask是0代表什么?
  9. 编曲录音宿主软件-Cubase Elements 11 v11.0.30 WiN 元素版
  10. WebRequest、WebResponse的使用示例