package com.excel;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Picture {
    public static void main(String[] args) {
        String filepath = SysConfig.getProperty("filepath");
        String picturepath = SysConfig.getProperty("picturepath");
        int rowNum = Integer.parseInt(SysConfig.getProperty("rowNum"));
        int cellNum = Integer.parseInt(SysConfig.getProperty("cellNum"));
        boolean result = insertPicture("excel路径", "图片路径", 1, 2);// 1代表插入的行数-1
                                                                // ,2代表插入的列数-1

        System.out.println("图片插入结果为==" + result);

    }

    /* 插入图片地址 文件地址 插入图片位置的关键字 图片类型 */

    /**
     * @param filePath
     * @param picturePath
     * @param rowNum
     * @param cellNum
     * @return
     */
    public static boolean insertPicture(String filePath, String picturePath, int rowNum, int cellNum) {
        // 初始化IO流内容

        FileOutputStream fileOut = null;
        BufferedImage bufferImg = null;
        int rowN = rowNum;// 图片插入行的初始化
        int cellN = cellNum;// 图片插入列的初始化
        try {

            // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
            ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

            bufferImg = ImageIO.read(new File(picturePath));// 图片地址

            ImageIO.write(bufferImg, "png", byteArrayOut);

            // 创建一个工作薄
            HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath));
            HSSFSheet sheet1 = wb.getSheetAt(0);

            // 创建插入图片需要的容器
            HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
            /*
             * HSSFClientAnchor几个数字解释:3:是x轴的开始节点, 0:
             * 是y轴的开始节点,1023:是x轴的结束节点,255:是y轴的结束节点
             * ,1:是从Excel的2列开始插入图片,10:是从excel的第11行开始插入图片,
             * 11:图片占用11列的位置,25:图片结束在excel的26行
             */
            HSSFClientAnchor anchor = new HSSFClientAnchor(3, 0, 1023, 255, (short) ((short) cellN), (rowN),
                    (short) ((short) cellN + 1), (rowN));

            anchor.setAnchorType(2);

            // 插入图片

            patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

            fileOut = new FileOutputStream(filePath);
            // 写入excel文件
            wb.write(fileOut);
            fileOut.close();
            return true;
        } catch (IOException io) {

            io.printStackTrace();

            System.out.println("io erorr :  " + io.getMessage());
            return false;

        } finally {

            if (fileOut != null) {

                try {

                    fileOut.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }
            }
        }

    }
}
最近下载更多
kuntay  LV1 2022年2月24日
asdsasddas  LV6 2021年9月14日
1358849392  LV21 2019年12月26日
zuopizi  LV1 2019年10月7日
doutao6677  LV25 2019年8月5日
john93  LV15 2018年12月11日
HelloWorld_123  LV1 2018年10月24日
扎一个  LV1 2018年8月20日
arashiaa  LV1 2018年8月15日
丶知北游丿  LV9 2018年7月23日
最近浏览更多
qwertyui惊鸿  LV7 2023年3月17日
java小书童  LV17 2023年2月27日
kuntay  LV1 2022年2月24日
asdsasddas  LV6 2021年9月14日
ewan007  LV29 2021年7月22日
iRichard1314  LV6 2021年7月19日
x2b2d2  LV12 2021年7月10日
225443  LV4 2021年6月25日
shen779  LV1 2021年3月16日
jstzli  LV2 2020年11月8日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友