POI導出圖片到EXCEL

1.Apache POI簡介

Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。 .NET的開發人員則可以利用NPOI (POI for .NET) 來存取 POI 的功能。

2.POI結構

HSSF - 提供讀寫Microsoft Excel XLS格式檔案的功能。
XSSF - 提供讀寫Microsoft Excel OOXML XLSX格式檔案的功能。
HWPF - 提供讀寫Microsoft Word DOC格式檔案的功能。
HSLF - 提供讀寫Microsoft PowerPoint格式檔案的功能。
HDGF - 提供讀Microsoft Visio格式檔案的功能。
HPBF - 提供讀Microsoft Publisher格式檔案的功能。
HSMF - 提供讀Microsoft Outlook格式檔案的功能。

3.參考實例

import java.io.FileOutputStream;

import java.io.File;

import java.io.ByteArrayOutputStream;

import java.io.IOException;


import java.awt.image.BufferedImage;

import javax.imageio.*;


import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFPatriarch;

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;


public class exportPicToExcel {


public static void main(String[] args) {

FileOutputStream fileOut = null;

BufferedImage bufferImg = null;

BufferedImage bufferImg2 = null;

try {

bufferImg = ImageIO.read(new File("C:/ztest/pic.jpg"));

bufferImg2 = ImageIO.read(new File("C:/ztest/pic2.jpg"));


// 先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray

ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();

ByteArrayOutputStream byteArrayOut2 = new ByteArrayOutputStream();

ImageIO.write(bufferImg, "jpg", byteArrayOut);

ImageIO.write(bufferImg2, "jpg", byteArrayOut2);


// 創建一個工作薄

HSSFWorkbook wb = new HSSFWorkbook();

HSSFSheet sheet1 = wb.createSheet("poi picT");

HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();

HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 50, 25,

(short) 3, 3, (short) 4, 4);

HSSFClientAnchor anchor2 = new HSSFClientAnchor(0, 0, 50, 25,

(short) 5, 5, (short) 6, 6);

anchor2.setAnchorType(2);


// 插入圖片

patriarch.createPicture(anchor, wb.addPicture(byteArrayOut

.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));

patriarch.createPicture(anchor2, wb.addPicture(byteArrayOut2

.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));


// 寫入excel文件

fileOut = new FileOutputStream("c:/ztest/test.xls");

wb.write(fileOut);

fileOut.close();

} catch (IOException io) {

io.printStackTrace();

System.out.println("io erorr : " + io.getMessage());

} finally {

if (fileOut != null) {

try {

fileOut.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}


// poi-bin-3.10-FINAL-20140208.zip

// 關於POI的更多參考:

// http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html

// http://langhua9527.iteye.com/blog/388005


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章