<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 5,  comments - 7,  trackbacks - 0

    POI里面處理圖形或者圖片的主要類是HSSFPatriarch,它負責管理一個表格里面所有的圖片和圖形,并且只能創建一個,如果你應用程序后來又創建了一個,那么將使以前創造的HSSFPatriarch所管理的圖片和圖形清除,所以一定要保留HSSFPatriarch的引用直到最后.

    這些圖片和單元格不同如果想取單元格上對應的圖片咱么辦,比如數據轉移的時候遇到這樣的問題

      1package com.org.util;
      2
      3import java.awt.image.BufferedImage;
      4import java.io.ByteArrayOutputStream;
      5import java.io.FileOutputStream;
      6import java.net.URL;
      7import javax.imageio.ImageIO;
      8import org.apache.poi.hssf.usermodel.HSSFCell;
      9import org.apache.poi.hssf.usermodel.HSSFCellStyle;
     10import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
     11import org.apache.poi.hssf.usermodel.HSSFFont;
     12import org.apache.poi.hssf.usermodel.HSSFPatriarch;
     13import org.apache.poi.hssf.usermodel.HSSFRichTextString;
     14import org.apache.poi.hssf.usermodel.HSSFRow;
     15import org.apache.poi.hssf.usermodel.HSSFSheet;
     16import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
     17import org.apache.poi.hssf.usermodel.HSSFWorkbook;
     18import org.apache.poi.hssf.util.HSSFColor;
     19
     20public class ExeclPicture{
     21    
     22
     23    public ExeclPicture() {
     24     }

     25    public static void main(String[] args)throws Exception {
     26        //創建一個工作薄
     27         HSSFWorkbook wb=new HSSFWorkbook();
     28        //創建一個表格
     29         HSSFSheet sheet=wb.createSheet("sheet1");
     30        //創建一個列
     31         HSSFRow row=sheet.createRow(0);
     32        //創建一個樣式
     33         HSSFCellStyle style=wb.createCellStyle();
     34        //設置這些樣式
     35         style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
     36         style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
     37         style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
     38         style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
     39         style.setBorderRight(HSSFCellStyle.BORDER_THIN);
     40         style.setBorderTop(HSSFCellStyle.BORDER_THIN);
     41         style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
     42        //創建一個字體
     43         HSSFFont font=wb.createFont();
     44         font.setColor(HSSFColor.VIOLET.index);
     45         font.setFontHeightInPoints((short)16);
     46         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
     47        //把字體應用到當前的樣式
     48         style.setFont(font);
     49        //聲明一個畫圖的頂級管理器
     50         HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
     51        //填充單元格
     52        for(int i=0;i<5;i++){
     53            //創建一個單元格
     54             HSSFCell cell=row.createCell(i);
     55            switch(i){
     56                case 0:
     57                    //設置普通文本
     58                     cell.setCellValue(new HSSFRichTextString("普通文本"));
     59                    break;
     60                case 1:
     61                    //設置為形狀
     62                     HSSFClientAnchor a1 = new HSSFClientAnchor( 001023255, (short10, (short10 );
     63                     HSSFSimpleShape shape1 = patriarch.createSimpleShape(a1);
     64                    //這里可以設置形狀的樣式
     65                     shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
     66                    
     67                    break;
     68                case 2:
     69                    //設置為布爾量
     70                     cell.setCellValue(true);
     71                    break;
     72                case 3:
     73                    //設置為double值
     74                     cell.setCellValue(12.5);
     75                    break;
     76                case 4:
     77                    //設置為圖片]
     78                     URL url=this.class.getResource("hello.jpg");
     79                     insertImage(wb,patriarch,getImageData(ImageIO.read(url)),0,4,1);
     80                    break;
     81                    
     82             }

     83            
     84            //設置單元格的樣式
     85             cell.setCellStyle(style);
     86         }

     87         FileOutputStream fout=new FileOutputStream("我的第一個EXCEL.xls");
     88        //輸出到文件
     89         wb.write(fout);
     90         fout.close();
     91     }

     92    //自定義的方法,插入某個圖片到指定索引的位置
     93    private static void insertImage(HSSFWorkbook wb,HSSFPatriarch pa,byte[] data,int row,int column,int index){
     94        int x1=index*250;
     95        int y1=0;
     96        int x2=x1+255;
     97        int y2=255;
     98         HSSFClientAnchor anchor = new HSSFClientAnchor(x1,y1,x2,y2,(short)column,row,(short)column,row);
     99         anchor.setAnchorType(2);
    100         pa.createPicture(anchor , wb.addPicture(data,HSSFWorkbook.PICTURE_TYPE_JPEG));
    101     }

    102    //從圖片里面得到字節數組
    103    private static  byte[] getImageData(BufferedImage bi){
    104        try{
    105             ByteArrayOutputStream bout=new ByteArrayOutputStream();
    106             ImageIO.write(bi,"PNG",bout);
    107            return bout.toByteArray();
    108         }
    catch(Exception exe){
    109             exe.printStackTrace();
    110            return null;
    111         }

    112     }

    113}

    114




    利用createPicture() 在patriarch上創建.支持 PNG ,JPG ,DIB
    一旦為某個wb的sheet創建了patriarch那么所有原有圖片將取消,
    通過HSSFPatriarch類createPicture方法的在指定的wb中的sheet創建圖片,它接受二個參數,第一個是HSSFClientAnchor,設定圖片的大小。

     1package com.poi.hssf.test;
     2
     3import java.io.FileOutputStream;
     4import java.io.File;
     5import java.io.ByteArrayOutputStream;
     6import java.io.IOException;
     7
     8import java.awt.image.BufferedImage;
     9import javax.imageio.*;
    10
    11import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    12import org.apache.poi.hssf.usermodel.HSSFSheet;
    13import org.apache.poi.hssf.usermodel.HSSFPatriarch;
    14import org.apache.poi.hssf.usermodel.HSSFClientAnchor;;
    15
    16public class TestPOI 
    17
    18    public static void main(String[] args) 
    19            FileOutputStream fileOut = null
    20            BufferedImage bufferImg =null
    21            BufferedImage bufferImg1 = null
    22            try
    23               
    24          //先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray 
    25          ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); 
    26          ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream(); 
    27          bufferImg = ImageIO.read(new File("d:/PieChart.jpg")); 
    28          bufferImg1 = ImageIO.read(new File("d:/fruitBarChart.jpg")); 
    29          ImageIO.write(bufferImg,"jpg",byteArrayOut); 
    30          ImageIO.write(bufferImg1,"jpg",byteArrayOut1); 
    31         
    32        //創建一個工作薄 
    33       HSSFWorkbook wb = new HSSFWorkbook(); 
    34       HSSFSheet sheet1 = wb.createSheet("new sheet"); 
    35       //HSSFRow row = sheet1.createRow(2); 
    36       HSSFPatriarch patriarch = sheet1.createDrawingPatriarch(); 
    37       HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,512,255,(short1,1,(short)10,20); 
    38       HSSFClientAnchor anchor1 = new HSSFClientAnchor(0,0,512,255,(short2,30,(short)10,60); 
    39       anchor1.setAnchorType(2);
    40       //插入圖片
    41       patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG)); 
    42       patriarch.createPicture(anchor1 , wb.addPicture(byteArrayOut1.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG)); 
    43       
    44           fileOut = new FileOutputStream("d:/workbook.xls"); 
    45           //寫入excel文件
    46           wb.write(fileOut); 
    47           fileOut.close(); 
    48       
    49            }
    catch(IOException io)
    50                    io.printStackTrace(); 
    51                    System.out.println("io erorr : "+ io.getMessage()); 
    52            }
     finally 
    53            
    54               if (fileOut != null
    55               {
    56                          
    57                   try 
    58                              fileOut.close(); 
    59                         }
     
    60                   catch (IOException e)
    61                   
    62                            // TODO Auto-generated catch block 
    63                            e.printStackTrace(); 
    64                     }
     
    65               }
     
    66            }

    67    }

    68}

    69


    posted on 2008-11-25 10:52 Vincent-chen 閱讀(8597) 評論(2)  編輯  收藏 所屬分類: POI 、Print
    主站蜘蛛池模板: 免费国产不卡午夜福在线| 亚洲中文字幕无码爆乳av中文| 国产成人亚洲精品播放器下载| 亚洲人成电影网站国产精品| 久久aⅴ免费观看| 亚洲午夜无码久久久久小说| 亚洲欧洲久久av| 2021国产精品成人免费视频| 男女作爱免费网站| 亚洲欧洲综合在线| 亚洲成a人无码av波多野按摩| 一级毛片免费毛片一级毛片免费| 久久精品国产亚洲AV未满十八| 久久精品九九亚洲精品天堂| 岛国av无码免费无禁网站| 一级特黄录像免费播放肥| 国产亚洲玖玖玖在线观看| 伊人久久大香线蕉亚洲| 成人免费看吃奶视频网站| 午夜无码A级毛片免费视频| 国产亚洲视频在线播放大全| 久久亚洲sm情趣捆绑调教| 亚洲国产精品成人久久蜜臀| 青青青国产在线观看免费| 大妹子影视剧在线观看全集免费 | 国产一区二区视频免费| 97公开免费视频| 一道本在线免费视频| 亚洲人成网男女大片在线播放| 亚洲啪啪AV无码片| 四虎永久免费影院| 天天拍拍天天爽免费视频| 2015日韩永久免费视频播放| 久久久WWW免费人成精品| 国产精品亚洲综合天堂夜夜| 日韩亚洲不卡在线视频中文字幕在线观看| 亚洲国产成人久久精品动漫| 亚洲日韩中文在线精品第一| 国产一级一片免费播放| 岛国片在线免费观看| 在线永久看片免费的视频|