• 如何轻松的把图片导入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表格中,里面还有好多可以设置的功能属性。

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

  • 相关阅读:
    通过注册表设置指定用户启动项的权限
    音频知识学习
    回老家也不忘老本......
    探索DOMNode
    表单填写示例(通过JavaScript访问DOM)
    最近的一些感悟
    C#和Java中的Substring()
    验证ASP.NET页生命周期时间的触发顺序
    解析c语言背后的汇编代码
    oracle nvl()函数在使用中出现的问题
  • 原文地址:https://www.cnblogs.com/zhang-dongliang/p/10875616.html
Copyright © 2020-2023  润新知