美文网首页每天写1000字
2019-02-17 第60天(我教你POI6-图片导出到Exc

2019-02-17 第60天(我教你POI6-图片导出到Exc

作者: 3171631ce5f1 | 来源:发表于2019-02-17 11:26 被阅读10次

今天,
可以算是 学生期 最后一篇教程了。
代码功能是:将本地图片通过POI 写入到 Excel文件中。
今后,如果在项目中遇到关于poi的需求,会继续补充的。
实现效果如下

生成的Excel文件会保存在项目底下.png
/**
 * 图片导入到Excel中
 * 需要注意的是,必须要有commons-codec-1.10.jar这个占包
 * 要不编译时,会通过。运行时会报异常
 * ClassNotFoundException: org.apache.commons.codec.digest.DigestUtils
 * @author Administrator
 *
 */
public class ExcelImageDemo {
    public static void main(String[] args) {
        FileOutputStream fileOut = null;    //输出流
        //BufferedImage的主要作用就是将图片加载到内存中。在内存里有一个图像缓冲区,利用缓冲区可以很方便操作图片
        //Raster与ColorModel,分别用于存储图像的像素数据和颜色数据。
        BufferedImage bufferImg = null; 
        // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
        try {
            ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
            bufferImg = ImageIO.read(new File("D:/ubuntn.png"));
            ImageIO.write(bufferImg, "png", byteArrayOut);
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet1 = wb.createSheet("test picture");
            //画图的顶级管理器,一个sheet只能获取一个 !!!!!
            HSSFPatriarch patriarch =sheet1.createDrawingPatriarch(); 
            for (int i = 0; i < 3; i++) {
                //anchor主要用户设置图片的属性 
                // 关于HSSFClientAnchor(dx1,dy1,dx2,dy2,col1,row1,col2,row2)的参数,有必要在这里说明一下:
                // dx1:起始单元格的x偏移量,
                // dy1:起始单元格的y偏移量,
                // dx2:终止单元格的x偏移量,
                // dy2:终止单元格的y偏移量,
                // col1:起始单元格列序号,从0开始计算;
                // row1:起始单元格行序号,从0开始计算,
                // col2:终止单元格列序号,从0开始计算;
                // row2:终止单元格行序号,从0开始计算,
                //添加多个图片时:多个pic应该share同一个DrawingPatriarch在同一个sheet里面。
                HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,250,(short)1,1+i*10,(short)5,8+i*10);
                                            //    01 08  05 08
                //结果:图片回压缩到一定的大小。 第一张图片的位置B2 B9--F2 F9  第二张图片的位置B12 B19--F12 F19   之后......
                //插入图片
                patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
                fileOut = new FileOutputStream("ImgExcel.xls");
                // 写入excel文件
                wb.write(fileOut);
                System.out.println("----Excle文件已生成------"); 
            }
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            if (fileOut != null) {
                try {
                    fileOut.close();
                } catch (IOException e) {
                    // TODO: handle exception
                }
            }
        }   
    }
}

相关文章

网友评论

    本文标题:2019-02-17 第60天(我教你POI6-图片导出到Exc

    本文链接:https://www.haomeiwen.com/subject/itcgeqtx.html