- 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();
- }
- }
- }
- }
来源: http://www.phpxs.com/code/1001912/