加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java poi 向excel写入图片

发布时间:2020-12-14 06:21:07 所属栏目:Java 来源:网络整理
导读:div class="cnblogs_code" span style="color: #0000ff;"import span style="color: #000000;" javax.imageio.ImageIO; span style="color: #0000ff;"import span style="color: #000000;" org.apache.poi.hssf.usermodel.HSSFClientAnchor; span style="col

<div class="cnblogs_code">

<span style="color: #0000ff;">import<span style="color: #000000;"> javax.imageio.ImageIO;

<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.HSSFClientAnchor;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.HSSFPatriarch;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.HSSFSheet;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.apache.poi.hssf.usermodel.HSSFWorkbook;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> Picture {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">String filepath = SpringConfigUtil.getValue("filepath");
<span style="color: #008000;">//<span style="color: #008000;">String picturepath = SpringConfigUtil.getValue("picturepath");
<span style="color: #008000;">//<span style="color: #008000;">int rowNum = Integer.parseInt(SpringConfigUtil.getValue("rowNum"));
<span style="color: #008000;">//<span style="color: #008000;"> int cellNum = Integer.parseInt(SpringConfigUtil.getValue("cellNum"));
<span style="color: #0000ff;">boolean result = insertPicture("E:datafile2015092015.xls","E:datafile201509test.jpg",3,5);<span style="color: #008000;">//<span style="color: #008000;"> 1代表插入的行数-1
<span style="color: #008000;">//<span style="color: #008000;"> ,2代表插入的列数-1
<span style="color: #000000;">
System.out.println("图片插入结果为==" +<span style="color: #000000;"> result);

}

</span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt; 插入图片地址 文件地址 插入图片位置的关键字 图片类型 </span><span style="color: #008000;"&gt;*/</span>

<span style="color: #008000;"&gt;/**</span><span style="color: #008000;"&gt;
 * </span><span style="color: #808080;"&gt;@param</span><span style="color: #008000;"&gt; filePath
 * </span><span style="color: #808080;"&gt;@param</span><span style="color: #008000;"&gt; picturePath
 * </span><span style="color: #808080;"&gt;@param</span><span style="color: #008000;"&gt; rowNum
 * </span><span style="color: #808080;"&gt;@param</span><span style="color: #008000;"&gt; cellNum
 * </span><span style="color: #808080;"&gt;@return</span>
 <span style="color: #008000;"&gt;*/</span>
<span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;boolean</span> insertPicture(String filePath,String picturePath,<span style="color: #0000ff;"&gt;int</span> rowNum,<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; cellNum) {
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 初始化IO流内容</span>

<span style="color: #000000;">
FileOutputStream fileOut = <span style="color: #0000ff;">null<span style="color: #000000;">;
BufferedImage bufferImg = <span style="color: #0000ff;">null<span style="color: #000000;">;
<span style="color: #0000ff;">int rowN = rowNum;<span style="color: #008000;">//<span style="color: #008000;"> 图片插入行的初始化
<span style="color: #0000ff;">int cellN = cellNum;<span style="color: #008000;">//<span style="color: #008000;"> 图片插入列的初始化
<span style="color: #0000ff;">try<span style="color: #000000;"> {

        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray</span>
        ByteArrayOutputStream byteArrayOut = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; ByteArrayOutputStream();

        bufferImg </span>= ImageIO.read(<span style="color: #0000ff;"&gt;new</span> File(picturePath));<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 图片地址</span>

<span style="color: #000000;">
ImageIO.write(bufferImg,"png"<span style="color: #000000;">,byteArrayOut);

        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 创建一个工作薄</span>
        HSSFWorkbook wb = <span style="color: #0000ff;"&gt;new</span> HSSFWorkbook(<span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; FileInputStream(filePath));
        HSSFSheet sheet1 </span>= wb.getSheetAt(0<span style="color: #000000;"&gt;);

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

        anchor.setAnchorType(</span>2<span style="color: #000000;"&gt;);

        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 插入图片</span>

<span style="color: #000000;">
patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));

        fileOut </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; FileOutputStream(filePath);
        </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 写入excel文件</span>

<span style="color: #000000;"> wb.write(fileOut);
fileOut.close();
<span style="color: #0000ff;">return <span style="color: #0000ff;">true<span style="color: #000000;">;
} <span style="color: #0000ff;">catch<span style="color: #000000;"> (IOException io) {

        io.printStackTrace();

        System.out.println(</span>"io erorr :  " +<span style="color: #000000;"&gt; io.getMessage());
        </span><span style="color: #0000ff;"&gt;return</span> <span style="color: #0000ff;"&gt;false</span><span style="color: #000000;"&gt;;

    } </span><span style="color: #0000ff;"&gt;finally</span><span style="color: #000000;"&gt; {

        </span><span style="color: #0000ff;"&gt;if</span> (fileOut != <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;) {

            </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {

                fileOut.close();

            } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (IOException e) {

                e.printStackTrace();

            }
        }
    }

}

}

参数读取:

<span style="color: #0000ff;">import<span style="color: #000000;"> org.springframework.core.io.ClassPathResource;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.springframework.core.io.Resource;
<span style="color: #0000ff;">import<span style="color: #000000;"> org.springframework.core.io.support.PropertiesLoaderUtils;

<span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> SpringConfigUtil {

</span><span style="color: #0000ff;"&gt;private</span> <span style="color: #0000ff;"&gt;static</span> Properties spring_props = <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Properties();
</span><span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; {
    </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; {
        Resource resource </span>= <span style="color: #0000ff;"&gt;new</span> ClassPathResource("/META-INF/config/app-config.properties"<span style="color: #000000;"&gt;);
        spring_props </span>=<span style="color: #000000;"&gt; PropertiesLoaderUtils.loadProperties(resource);
    } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; (Exception e) {
        e.printStackTrace();
    }
}
</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; String getValue(String key) {
    String value </span>= ""<span style="color: #000000;"&gt;;
    </span><span style="color: #0000ff;"&gt;if</span><span style="color: #000000;"&gt; (spring_props.containsKey(key)) {
        value </span>= spring_props.getProperty(key,""<span style="color: #000000;"&gt;);
    }
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; value;
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读