Java动态生成条形码并将条形码插入进excel中,javaexcel,package k.ba
分享于 点击 8459 次 点评:224
Java动态生成条形码并将条形码插入进excel中,javaexcel,package k.ba
package k.barcode;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.POIFSFileSystem;import org.apache.poi.ss.usermodel.ClientAnchor;import org.apache.poi.ss.usermodel.CreationHelper;import org.apache.poi.ss.usermodel.Drawing;import org.apache.poi.ss.usermodel.Picture;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.util.IOUtils;import org.krysalis.barcode4j.impl.code39.Code39Bean;import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;import org.krysalis.barcode4j.tools.UnitConv;public class InsExcel { private POIFSFileSystem fs; private HSSFWorkbook wb; private HSSFSheet sheet; private HSSFRow row; private FileInputStream input; private String[] excleTitle; public static void main(String[] args) { //生成条码 String bcVal = InsExcel.makeBarcodeValue(); //生成条码图片 String bcPath = InsExcel.makeBarcode(bcVal); //插入excel InsExcel.insBarcodeInExcel(bcPath); } //生成条码值 public static String makeBarcodeValue(){ return "A"+System.currentTimeMillis(); } //生成条码文件至临时目录,并返回生成图片的路径信息 public static String makeBarcode(final String barcodeValue){ //存放条码图片的路径 final String barcodePicPath = "d:\\\\barcode\\\\"; try { //Create the barcode bean Code39Bean bean = new Code39Bean(); final int dpi = 150; //Configure the barcode generator bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi)); //makes the narrow bar //width exactly one pixel bean.setWideFactor(3); bean.doQuietZone(false); //Open output file File outputFile = new File(barcodePicPath+barcodeValue+".png"); OutputStream out = new FileOutputStream(outputFile); try { //Set up the canvas provider for monochrome JPEG output BitmapCanvasProvider canvas = new BitmapCanvasProvider( out, "image/png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); //Generate the barcode bean.generateBarcode(canvas, barcodeValue); //Signal end of generation canvas.finish(); } finally { out.close(); } } catch (Exception e) { e.printStackTrace(); } return barcodePicPath+barcodeValue+".png"; } public static void insBarcodeInExcel(String barcodePic){ FileInputStream input = null; try { input = new FileInputStream(new File("d:\\\\base.xls"));// excelPath,Excel // 文件 的绝对路径 POIFSFileSystem fs = new POIFSFileSystem(input); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(1); HSSFRow row = sheet.getRow(0);// 得到标题的内容对象。 System.out.println(row.getCell(15).toString()); InputStream inputStream = new FileInputStream(barcodePic); byte[] bytes = IOUtils.toByteArray(inputStream); int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG); inputStream.close(); CreationHelper helper = wb.getCreationHelper(); Drawing drawing = sheet.createDrawingPatriarch(); ClientAnchor anchor = helper.createClientAnchor(); anchor.setCol1(15); anchor.setRow1(0); Picture pict = drawing.createPicture(anchor, pictureIdx); pict.resize(); FileOutputStream fileOut = new FileOutputStream("d:\\\\base.xls"); wb.write(fileOut); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (input != null) { input.close(); } } catch (IOException e) { e.printStackTrace(); } } }}
用户点评