zoukankan      html  css  js  c++  java
  • 如何轻松的把图片导入execl表格中

      在项目中有时候会遇到往数据库中导数据的时候,往往需要把图片也一起导入execl表格中,那怎么才能把图片一块导入至execl中呢?那么今天我们就来看看怎么实现吧!

      如何实现?今天我们就来用jxl和poi分别实现一下怎么导入execl表格图片

    1.首先用jxl实现把图片导入execl

      由于是测试我把路径和execl表格名称直接全都写死了

    import jxl.Workbook;
    import jxl.write.WritableImage;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import java.io.File;
    import java.io.FileOutputStream;
    
    /**
     * 用jxl导出模板
     * @author pillar
     * @date 2019-05-14
     */
    public class testExecl {
        public static void main(String[] args) throws Exception{
    
            //要导出的图片地址
            String pictureUrl = "D:"+ File.separator+"pillar"+ File.separator+"pilar.png";
            //模板地址
            String templateXlsFilePath= "D:"+ File.separator+"pillar"+File.separator+"pillarTest.xls";
            //要导出execl的地址
            String exportFilePath = "D:"+ File.separator+"pillar"+File.separator+"pillar.xls";
            //导出execl模板
            FileOutputStream outStream =  new FileOutputStream(exportFilePath);
            // 打开一个文件的副本,并且指定数据写回到原文件
            Workbook templateWorkbook = Workbook.getWorkbook(new File(templateXlsFilePath));
            WritableWorkbook book = Workbook.createWorkbook(outStream,templateWorkbook);
            // 添加一个工作表
            WritableSheet sheet = book.getSheet(0);
            File file = new File(pictureUrl);
            //设置图片位置
            WritableImage image=new WritableImage(2, 2, 2, 3,file);
            sheet.addImage(image);
    
            book.write();
            book.close();
            outStream.flush();
            outStream.close();
        }
    }
    

      

    执行运行之后效果如下

    只要把参数正确传入类正确引用,我们就可以顺利实现啦。

    2.我们再来看用poi怎么实现导入图片

    import org.apache.poi.hssf.usermodel.*;
    
    import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    
    /**
     * @author pillar
     * @date 2019-05-14
     */
    public class testPoiExecl {
        public static void main(String[] args) throws Exception{
    
            //将读取到的图片放在ByteArrayOutputStream中。。。
            ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream();
            //读取图片并写入byteArrayOutStream
            BufferedImage bufferImg = ImageIO.read(new File("D:\pillar\pilar.png"));
            ImageIO.write(bufferImg, "png", byteArrayOutStream);
            //创建一个工作簿
            HSSFWorkbook wb = new HSSFWorkbook();
            //创建一个表格
            HSSFSheet sheet = wb.createSheet();
            //HSSFPatriarch类将图片写入execl
            HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
            //设置图片的位置
            HSSFClientAnchor anchor = new HSSFClientAnchor(10, 10, 1023, 250,(short) 2, 2, (short) 2, 2);
    
            patriarch.createPicture(anchor, wb.addPicture(byteArrayOutStream.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
            //要导入的地址路径
            FileOutputStream  fileOut = new FileOutputStream("D:\pillar\pillarTest.xls");
            // 写入excel文件
            wb.write(fileOut);
            fileOut.close();
        }
    }
    

      

    运行之后图片如下所示

      我们通过两种方法实现了把图片导入到execl表格中,当然这只是简单实现把图片导入到execl表格中,里面还有好多可以设置的功能属性。

      如有不当之处,请指出,我们一起交流学习,共同进步!谢谢!

  • 相关阅读:
    Struts2声明式异常处理
    几种常用的过滤器
    Jdk 和 Tomcat的 安装。(旧版本,请看新版本3篇)
    java 判断字符串是否相等
    PreparedStatement 查询 In 语句 setArray 等介绍。
    String、StringBuffer与StringBuilder之间区别
    IntelliJ IDEA 里 查看一个函数注释的方法是 ctrl+q
    Java字符串拼接效率对比
    Java 中判断字符串是否为空
    IntelliJ IDEA + Tomcat ;On Upate Action 与 On Frame Deactivation
  • 原文地址:https://www.cnblogs.com/zhang-dongliang/p/10875616.html
Copyright © 2011-2022 走看看