posts - 120,  comments - 19,  trackbacks - 0
          前面已經講過利用POI讀寫Excel,下面是一個用POI向Excel中插入圖片的例子。

          官方文檔:
          Images are part of the drawing support. To add an image just call createPicture() on the drawing patriarch. At the time of writing the following types are supported:
          PNG
          JPG
          DIB
          It is not currently possible to read existing images and it should be noted that any existing drawings may be erased once you add a image to a sheet.

          // Create the drawing patriarch. This is the top level container for
          // all shapes. This will clear out any existing shapes for that sheet.


          通過HSSFPatriarch類createPicture方法的在指定的wb中的sheet創建圖片,它接受二個參數,第一個是HSSFClientAnchor,設定圖片的大小。

          package com.poi.hssf.test;

          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 TestPOI {

          ??? public static void main(String[] args) {
          ??????????? FileOutputStream fileOut = null;
          ??????????? BufferedImage bufferImg =null;
          ??????????? BufferedImage bufferImg1 = null;
          ??????????? try{
          ?????????? ??? ?
          ????????? //先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray
          ????????? ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
          ????????? ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();
          ????????? bufferImg = ImageIO.read(new File("d:/PieChart.jpg"));
          ????????? bufferImg1 = ImageIO.read(new File("d:/fruitBarChart.jpg"));
          ????????? ImageIO.write(bufferImg,"jpg",byteArrayOut);
          ????????? ImageIO.write(bufferImg1,"jpg",byteArrayOut1);
          ???????? ?
          ??????? //創建一個工作薄
          ?? ??? ?HSSFWorkbook wb = new HSSFWorkbook();
          ?? ??? ?HSSFSheet sheet1 = wb.createSheet("new sheet");
          ?? ??? ?//HSSFRow row = sheet1.createRow(2);
          ?? ??? ?HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
          ?? ??? ?HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,512,255,(short) 1,1,(short)10,20);
          ?? ??? ?HSSFClientAnchor anchor1 = new HSSFClientAnchor(0,0,512,255,(short) 2,30,(short)10,60);
          ?? ??? ?anchor1.setAnchorType(2);
          ?? ??? ?//插入圖片
          ?? ??? ?patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
          ?? ??? ?patriarch.createPicture(anchor1 , wb.addPicture(byteArrayOut1.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
          ?? ??? ?
          ?? ??? ??? ?fileOut = new FileOutputStream("d:/workbook.xls");
          ?? ??? ??? ?//寫入excel文件
          ?? ??? ??? ?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();
          ?? ??? ????????????? }
          ?? ??? ??? ??? ?}
          ?? ??? ???? }
          ??? }
          }



          posted on 2006-08-16 09:09 阿成 閱讀(2988) 評論(4)  編輯  收藏 所屬分類: Open source
          主站蜘蛛池模板: 大邑县| 浮梁县| 吉木乃县| 咸宁市| 长宁县| 全椒县| 屯昌县| 都兰县| 古交市| 衡山县| 平利县| 凤凰县| 庄浪县| 屏山县| 贞丰县| 巴中市| 阿坝县| 独山县| 稻城县| 西和县| 花莲市| 松桃| 浦县| 云和县| 东丽区| 合水县| 济南市| 江津市| 金寨县| 嘉峪关市| 芜湖市| 渑池县| 黑山县| 安陆市| 井陉县| 和平区| 南京市| 瑞安市| 乐昌市| 嘉祥县| 随州市|