java+poi在Excel中生成二维码
代码如下:
第一种: 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个单元格的行号