java 动态导入excel_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();

}

}

}

}

你可能感兴趣的:(java,动态导入excel)