如何轻松的把图片导入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表格中,里面还有好多可以设置的功能属性。
如有不当之处,请指出,我们一起交流学习,共同进步!谢谢!