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

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

原文地址:https://www.cnblogs.com/zhang-dongliang/p/10875616.html