在项目中有时候会遇到往数据库中导数据的时候,往往需要把图片也一起导入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表格中,里面还有好多可以设置的功能属性。
如有不当之处,请指出,我们一起交流学习,共同进步!谢谢!