java+poi在Excel中生成二维码

这篇博客介绍了如何使用Apache POI库在Excel中插入二维码。第一种方法通过设置二维码内容、大小和坐标,第二种方法利用CreationHelper创建二维码并调整尺寸。XSSFClientAnchor参数详细解释了单元格坐标和偏移量的设置。
摘要由CSDN通过智能技术生成

代码如下: 

第一种:
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import com.goole.zxing.qrcode.QRCodeWriter;
……

XSSFSheet sheet = (XSSFSheet) workbook.getSheet("SheetName");
XSSFDrawing patriarch = sheet.createDrawingPatriarch();
//设置二维码内容和大小
ByteArrayOutputStream baos = (ByteArrayOutputStream)generateQRCodeImage("二维码内容", 400, 400);
//二维码坐标设置(注:后4个参数是二维码显示范围从(0,0)单元格到(3,4)单元格,单元格之间是否存在合并都没有影响)
XSSFClientAnchor anchor = new XSSFClientAnchor(0 , -20000, -30000 , 0, 0, 0, 3, 4);
//将二维码图片插入Excel中
patriarch.createPicture(anchor, workbook.addPicture(baos.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG));

public OutputStream generateQRCodeImage(String qrStr, int widths, int heights) throws Exception {
  QRCodeWriter qrCodeWriter = new QRCodeWriter();
  BitMatrix bitMatrix = qrCodeWriter.encode(qrStr,BarcodeFormat.QR_CODE,widths,heights);
  ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream();
  MatrixToImageWriter.writeToStream(bitMatrix, "PNG",byteArrayOutStream);
  return byteArrayOutStream;
}

第二种:
CreationHelper helper = workbook.getCreationHelper();
ByteArrayOutputStream baos = (ByteArrayOutputStream) QRCodeGenerator.generateQRCodeImage("二维码内容", 400, 400);
ClientAnchor anchor = helper.createClientAnchor();
//二维码坐标设置
anchor.setCol1(0);
anchor.setRow1(0);
//图片结束列数anchor.setCol2(3);
//图片结束行数anchor.setRow2(4);
//将二维码图片插入Excel中
Picture pict = patriarch.createPicture(anchor, workbook.addPicture(baos.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG));
pict.resize();

 XSSFClientAnchor的参数说明:  

XSSFClientAnchor(int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2)
         //  dx1    第1个单元格中x轴的偏移量   
         //  dy1    第1个单元格中y轴的偏移量   
         //  dx2    第2个单元格中x轴的偏移量   
         //  dy2    第2个单元格中y轴的偏移量   
         //  col1   第1个单元格的列号 
         //  row1  第1个单元格的行号 
         //  col2   第2个单元格的列号 
         //  row2  第2个单元格的行号 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值