| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
efbb
10年前发布

Java动态生成条形码并将条形码插入进excel中

   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();              }          }      }      }