直接上代碼:
public static void main(String[] args) throws Exception {
FileOutputStream fileOut = null;
/*
*
* 目的:操作圖片 實現:第一步-需要將圖片從磁盤加載到內存中,第二步-java中有Image和BufferedImage這兩種處理圖片的類,
*
* 第一種類似copy,不能對 圖片進行操作,而BufferedImage則是將圖片放入內存圖片緩衝區中,可以對圖片進行修改。
*
*/
BufferedImage bufferImg = null;
// 先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray
try {
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
bufferImg = ImageIO.read(new File("d:/aa/123.jpg"));
ImageIO.write(bufferImg, "png", byteArrayOut);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("test picture");
// 畫圖的頂級管理器,一個sheet只能獲取一個(一定要注意這點)
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
/**
* 該構造函數有8個參數
* 前四個參數是控制圖片在單元格的位置,分別是圖片距離單元格left,top,right,bottom的像素距離
* 後四個參數,前連個表示圖片左上角所在的cellNum和 rowNum,後天個參數對應的表示圖片右下角所在的cellNum和 rowNum,
* excel中的cellNum和rowNum的index都是從0開始的
*
*/
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 255, 255, (short) 1, 1, (short) 5, 8);
// 插入圖片
patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
File file = new File("d:/aa/123.xls");
file.createNewFile();
fileOut = new FileOutputStream(file);
// 寫入excel文件
wb.write(fileOut);
System.out.println("----Excel文件已生成------");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileOut != null) {
try {
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
希望對你有所幫助!