java POI Excel插入图片_drawing.createpicture-程序员宅基地

技术标签: Java  java  POI 图片  Excel 图片  开发语言  

先看下效果:

 

 效果:

在三行两列分别插入文字和图片:第一列纯文本,第二列是对应的图片。

下面上代码:

 /**
     * This Method loads the image from application resource and insert into the
     * Cell
     */
    private static void insertImageToCell(Workbook workbook, String fileType, int rowNum, Drawing drawing,
                                          String imageName) throws IOException {

        //Loading image from application resource
        InputStream is = new FileInputStream(imageName); //ReportBase.class.getClassLoader().getResourceAsStream(imageName);

        //Converting input stream into byte array
        byte[] inputImageBytes = IOUtils.toByteArray(is);
        int inputImagePictureID = workbook.addPicture(inputImageBytes, Workbook.PICTURE_TYPE_PNG);
        is.close();

        ClientAnchor anchor = null;

        //Creating the client anchor based on file format
        if (fileType.equals("xls")) {
            anchor = new HSSFClientAnchor();
        } else {
            anchor = new XSSFClientAnchor();
        }
        anchor.setCol1(1);
        anchor.setCol2(2);
        anchor.setRow1(rowNum - 1);
        anchor.setRow2(rowNum);

        drawing.createPicture(anchor, inputImagePictureID);
    }
private  static void  testExcel(){
        Workbook workbook = null;
        FileOutputStream fos = null;
        try {
            File file = new File("E:/company-logo.xlsx");
            String fileType = null;

            // Creating workbook object based on excel file format
            if (file.getName().endsWith(".xls")) {
                workbook = new HSSFWorkbook();
                fileType = "xls";
            } else if (file.getName().endsWith(".xlsx")) {
                workbook = new XSSFWorkbook();
                fileType = "xlsx";
            } else {
                System.err.println("File format should be XLS or XLSX only.");
                return;
            }

            Sheet sheet =workbook.createSheet("Company Logo");

            // Creating drawing object
            Drawing drawing = sheet.createDrawingPatriarch();

            //Adding first row data
            Row row1 = sheet.createRow(0);
            row1.setHeight((short) 1000);
            row1.createCell(0).setCellValue("Apple");
            insertImageToCell(workbook, fileType, 1, drawing, "E:\\Pictures\\88888.png");

            //Adding second row data
            Row row2 = sheet.createRow(1);
            row2.setHeight((short) 1000);
            row2.createCell(0).setCellValue("Google");
            insertImageToCell(workbook, fileType, 2, drawing, "E:\\Pictures\\88888.png");

            //Adding third row data
            Row row3 = sheet.createRow(2);
            row3.setHeight((short) 1000);
            row3.createCell(0).setCellValue("Facebook");
            insertImageToCell(workbook, fileType, 3, drawing, "E:\\Pictures\\88888.png");

            // Resize all columns to fit the content size
            for (int i = 0; i < 3; i++) {
                sheet.autoSizeColumn(i);
            }

            // Write the workbook to the excel file
            fos = new FileOutputStream(file);
            workbook.write(fos);
            System.out.println("Images have been added successfully.");

        } catch (IOException e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
        } finally {
            if (workbook != null) {
                try {
                    workbook.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010919083/article/details/125935608

智能推荐

MyEclipse 8.5 官方下载地址及其注册码-程序员宅基地

文章浏览阅读80次。MyEclipse 8.5 官方下载地址及其注册码下面是MyEclipse 8.5官方下载地址:MyEclipse 8.5 官方下载地址及其注册码MyEclipse 8.5.0-win32File size: 825.84 MB MD5 : a9038148dcde9066abc3711bf8ee636c http://downloads.myeclipseide.com/d..._myeclipse8.5下载

OAuth使用教程(一):初识OAuth-程序员宅基地

文章浏览阅读7.6k次,点赞5次,收藏24次。一、OAuth介绍  OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。  OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源。二、OAuth2 角色OAuth 2 标准中定义了以下几种角色:资源..._oauth

自制文件系统对于wifi的wpa_supplicant移植_could not unlink existing ctrl_iface socket-程序员宅基地

文章浏览阅读2.3k次。最近一些项目原因需要让自制的linux qt文件系统支持wifi功能,本文将具体进行分析。首先想要支持wifi功能,wifi驱动是必不可少的,一般的嵌入式设备都集成wifi模块了,如果没有,请选配一款usbwifi模块。1,然后是编译wifi驱动,具体型号具体分析,可以百度,本文不做阐述,假设编译出的wifi驱动模块文件叫wlan.ko,并且假设内核版本是3.4.39。2,wi_could not unlink existing ctrl_iface socket

程序定时关闭器 - Windows下多功能自动定时关闭程序的软件工具-程序员宅基地

文章浏览阅读2.8k次。程序定时关闭器是一款小巧实用的Windows自动化工具软件,它使您能够设置定时关闭系统上正在运行的程序和软件,并选择是否要关闭、注销、休眠或重新启动您的电脑。 _程序定时关闭器

c语言作业我的日常消费,计算机二级C语言每日练习-程序员宅基地

文章浏览阅读109次。C语言是把高级语言的基本结构和语句与低级语言的实用性结合起来的工作单元。下面给大家整理了计算机二级C语言每日练习,一起来看看吧!计算机二级C语言每日练习1、 一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师与课程关系 BA) 1:m 联系B) m: n 联系C) m: 1联系D) 1:1联系2、 结构化程序所要求的基本结构不包括 BA) 重复(循环)结构 B) GOTO跳转C) 选择(分支..._c语言二级作业

计算机考研北京地区,2019考研北京地区计算机考研研招院校及优势专业-程序员宅基地

文章浏览阅读249次。可以提前了解一下计算机专业在各大研招院校的排名情况,找到适合自己的专业和学校,也能为后期的备考节省时间。小编还为大家精心准备了计算机专业考研报录比指南还有计算机考研导师推荐助力你的考研路哦!清华大学工学老大,实力超群,名副其实的大学巨无霸。考研的话计算机专业就更不用说了,名声在外响当当!北京大学综合类大学老大,文科,理科,医学都是牛的不行。有好几个联合办学的院校都有招收计算机专业的研究生。中国人民...

随便推点

python编写我的世界_用python写的mc-程序员宅基地

文章浏览阅读5.9k次,点赞10次,收藏32次。国外一位大神用python写了我的世界这个游戏,由于只有三个方块可放置,于是加了亿点点细节。如果有问题,底下评论就行了。希望大家喜欢!资源/图片展示:代码如下:TICKS_PER_SEC = 60SECTOR_SIZE = 16GAMETYPES = False # 是否开启冰雪世界SEED = random.randint(10, 1000000)#656795(种子"akioi") # 世界种子print('seed:', SEE..._用python写的mc

接口测试工具SoapUI(一)安装和破解_soapui scz.key-程序员宅基地

文章浏览阅读5.3k次。一、下载下载安装包和破解工具地址:二、安装依次按照以下截图步骤安装三、破解1、拷贝Protection-4.6.jar到soapui安装的lib目录下替换原来的文件;2、运行程序bin\soapui-pro.bat,依次按照以下步骤导入scz.key即可;..._soapui scz.key

PD/QC协议取电芯片,一颗芯片解决您的无线充烦恼_qc5.0充电芯片-程序员宅基地

文章浏览阅读1.3k次。PD+QC协议诱骗芯片,一颗芯片解决您的烦恼在手机快充充电器/车充等里面有一颗PD/QC或者三星的AFC协议芯片,我们把这个协议芯片叫做供电端协议芯片。我们经常看到充电器有18W、20W、45W和65W等等,支持的输出电压有5V/9V/12V/15V/20V等等。在充电器默认状态下,它只会输出5V电压,只有启动了快充协议,充电器才会输出9V以上的电压。如果需要启动适配器(充电头)的快充协议,这就需要一颗受电端协议IC,去诱骗出设备所需要的电压档位。1、概述 LDR6328 是乐得瑞科技有限公司针对 US_qc5.0充电芯片

传输加载优化(资源压缩、资源缓存、HTTP2)_asset-manifest.json-程序员宅基地

文章浏览阅读4.8k次。启用压缩 GzipGzip 是用来做网络资源压缩,帮助我们减少资源文件在网络传输大小的技术,可以高达 90%如下是 MacOs 安装方法,Windows 安装方法及使用可以参考我这篇文章:项目技术架构-Nginx 服务器搭建安装 homebrew:https://brew.sh/index_zh-cn/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"_asset-manifest.json

2023 年最新版 Java 后端最全面试攻略,全面对标 BATJ互联网大厂_java后端面试-程序员宅基地

文章浏览阅读871次。小编分享的这份 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份 PDF 拿下众多大厂的 offer,今天在这里总结分享给到大家!_java后端面试

发现了新大陆--嵌入式入门C语言必学的课程-程序员宅基地

文章浏览阅读1.2k次。MSN上又问到爱胜问题啦(哈哈,兄弟真好,我问那么多问题都没烦,感动!:)),Beson(爱胜英文名)说,搞嵌入式的话要把给我的那个c的资料好好看看,重点是指针/内存那章,他以前找工作时候有一次面试100%的都是那上的题目,非常重要,他那次只用了15分钟都搞定了(强!)。还说,港港找工作的时候也让他看了,也找到了,听说也好多都是那上面的。哇塞,真是武功秘籍啊!这本书一定要当圣经看啊!然而,好像

推荐文章

热门文章

相关标签