在項目中有時候會遇到往數據庫中導數據的時候,往往需要把圖片也一起導入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表格中,里面還有好多可以設置的功能屬性。
如有不當之處,請指出,我們一起交流學習,共同進步!謝謝!
