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

package k.barcode;
002 
003import java.awt.image.BufferedImage;
004import java.io.File;
005import java.io.FileInputStream;
006import java.io.FileNotFoundException;
007import java.io.FileOutputStream;
008import java.io.IOException;
009import java.io.InputStream;
010import java.io.OutputStream;
011 
012import org.apache.poi.hssf.usermodel.HSSFRow;
013import org.apache.poi.hssf.usermodel.HSSFSheet;
014import org.apache.poi.hssf.usermodel.HSSFWorkbook;
015import org.apache.poi.poifs.filesystem.POIFSFileSystem;
016import org.apache.poi.ss.usermodel.ClientAnchor;
017import org.apache.poi.ss.usermodel.CreationHelper;
018import org.apache.poi.ss.usermodel.Drawing;
019import org.apache.poi.ss.usermodel.Picture;
020import org.apache.poi.ss.usermodel.Workbook;
021import org.apache.poi.util.IOUtils;
022import org.krysalis.barcode4j.impl.code39.Code39Bean;
023import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
024import org.krysalis.barcode4j.tools.UnitConv;
025 
026public class InsExcel {
027 
028    private POIFSFileSystem fs;
029    private HSSFWorkbook wb;
030    private HSSFSheet sheet;
031    private HSSFRow row;
032    private FileInputStream input;
033    private String[] excleTitle;
034 
035    public static void main(String[] args) {
036        //生成条码
037        String bcVal = InsExcel.makeBarcodeValue();
038        //生成条码图片
039        String bcPath = InsExcel.makeBarcode(bcVal);
040        //插入excel
041        InsExcel.insBarcodeInExcel(bcPath);
042    }
043     
044    //生成条码值
045    public static String makeBarcodeValue(){
046        return "A"+System.currentTimeMillis();
047    }
048     
049    //生成条码文件至临时目录,并返回生成图片的路径信息
050    public static String makeBarcode(final String barcodeValue){
051        //存放条码图片的路径
052        final String barcodePicPath = "d:\\barcode\\";
053        try {
054            //Create the barcode bean
055            Code39Bean bean = new Code39Bean();
056             
057            final int dpi = 150;
058             
059            //Configure the barcode generator
060            bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi)); //makes the narrow bar
061                                                             //width exactly one pixel
062            bean.setWideFactor(3);
063            bean.doQuietZone(false);
064             
065            //Open output file
066            File outputFile = new File(barcodePicPath+barcodeValue+".png");
067            OutputStream out = new FileOutputStream(outputFile);
068            try {
069                //Set up the canvas provider for monochrome JPEG output
070                BitmapCanvasProvider canvas = new BitmapCanvasProvider(
071                        out, "image/png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
072             
073                //Generate the barcode
074                bean.generateBarcode(canvas, barcodeValue);
075             
076                //Signal end of generation
077                canvas.finish();
078            } finally {
079                out.close();
080            }
081        } catch (Exception e) {
082            e.printStackTrace();
083        }
084         
085        return barcodePicPath+barcodeValue+".png";
086    }
087     
088    public static void insBarcodeInExcel(String barcodePic){
089        FileInputStream input = null;
090        try {
091            input = new FileInputStream(new File("d:\\base.xls"));// excelPath,Excel
092            // 文件 的绝对路径
093            POIFSFileSystem fs = new POIFSFileSystem(input);
094            HSSFWorkbook wb = new HSSFWorkbook(fs);
095            HSSFSheet sheet = wb.getSheetAt(1);
096            HSSFRow row = sheet.getRow(0);// 得到标题的内容对象。
097            System.out.println(row.getCell(15).toString());
098 
099            InputStream inputStream = new FileInputStream(barcodePic);
100            byte[] bytes = IOUtils.toByteArray(inputStream);
101            int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
102            inputStream.close();
103            CreationHelper helper = wb.getCreationHelper();
104            Drawing drawing = sheet.createDrawingPatriarch();
105            ClientAnchor anchor = helper.createClientAnchor();
106            anchor.setCol1(15);
107            anchor.setRow1(0);
108            Picture pict = drawing.createPicture(anchor, pictureIdx);
109            pict.resize();
110            FileOutputStream fileOut = new FileOutputStream("d:\\base.xls");
111            wb.write(fileOut);
112            fileOut.close();
113 
114        } catch (FileNotFoundException e) {
115            e.printStackTrace();
116        } catch (IOException e) {
117            e.printStackTrace();
118        } finally {
119            try {
120                if (input != null) {
121                    input.close();
122                }
123            } catch (IOException e) {
124                e.printStackTrace();
125            }
126        }
127    }
128 
129}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该工具为个人整理修改的常用工具类,maven结构,Java语言编写详细依赖间pom文件,如有冲突自行修改, 包括条形码操作工具、二维码操作、图片验证码工具、动态密码工具、雪花算法id工具、签名工具、poi导出、json转换、文件操作、分页、日期处理、jdbc、大数运算及格式化、gzip压缩、http 结构说明如下: datasourceconfig:多数据源使用配置包 对数据源配置.txt:配置说明文件 function:功能代码及工具类 delayqueue:java自带延迟对了使用包 DelayMsg:延迟消息实体 DelayMsgHandler:延迟消息处理工具 paramvalid:空参检查包 CommonUtil:空参检查工具类 ParamNotNull:参数注解 RegistParam:参数实体 RequestMsg:公共参数实体 pdf:pdf导出工具包,包含4个导出工具类,具体使用根据导出结果确定 websocket:服务端websockt配置包,比较简单,具体使用需自行扩充 ActiveMqUtil:ActiveMq操作工具类 BarCodeUtil:条形码操作工具类,包括生成和读取 CorsConfig:服务端防止跨域请求公共设置 DateUtil:时间处理工具类 DBConnection:jdbc工具类 FileOperater:文件处理工具类 包括 读取文本文件,写出文本文件, 大文件切分,文件下载,文件或文件夹比较,文件或文件夹遍历筛选 ...... HttpClientCard:http工具类 HttpUtil:http工具类 Identification:id生成工具类,包括 UUID luhn算法id(适用于有序的流水号码) ImgUtil:图片相似度计算工具 ItvJsonUtil:基于fastjson的json工具类 JsonUtility:基于jackjson的接送工具类 MailUtil:邮件工具类,包括发送纯文本邮件,带(1个/多个)附件的邮件, 群发邮件 NumberUtil:数字操作工具 包括精准数字运算,数据格式化 PageUtil:分页工具类, POIUtil:poi工具类,excel导出 QrCodeUtil:二维码操作工具, 包括生成和读取 ShellUtil:shell命令操作工具,包括linux登陆,命令执行...... 较为简单,具体需要自行扩充 SignUtil:签名工具,包括MD5 位运算 AES BASE64 SnowflakeIdWorker:ID生成工具 雪花算法 SocketUtil:socket测试工具 TotpAuthUtil:动态密码工具 包括生成和校验 VerifyCodeUtil:图片验证码生成工具 ZipUtils:gzip压缩工具

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值