<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)  編輯  收藏 所屬分類: POIPrint
    主站蜘蛛池模板: 97碰公开在线观看免费视频| 国产高清免费在线| 精品国产亚洲一区二区三区| 四虎精品免费永久免费视频| 国产美女无遮挡免费视频网站| 亚洲av片在线观看| 无码国产精品一区二区免费16| 亚洲AV无码成人专区片在线观看| 亚洲AV网一区二区三区| 精品成在人线AV无码免费看| 亚洲视频在线免费播放| 中文字幕av无码无卡免费| 日本亚洲国产一区二区三区| 热99RE久久精品这里都是精品免费 | 特级无码毛片免费视频| 免费a级毛片大学生免费观看| 在线观看亚洲人成网站| 2019中文字幕在线电影免费| 亚洲午夜在线播放| 免费国产黄网站在线观看视频| 亚洲资源在线观看| a级毛片高清免费视频就| 亚洲va中文字幕无码久久不卡| 最近免费中文字幕mv在线电影 | 久久免费观看国产99精品| 久久综合亚洲色HEZYO国产| 亚洲精品无码人妻无码| 91成人免费观看网站| 亚洲日韩精品无码专区| 亚洲色欲久久久久综合网| 久久精品国产亚洲AV未满十八| 亚洲人成色7777在线观看不卡 | 久久青青草原亚洲av无码app| 中国在线观看免费国语版| 高清免费久久午夜精品| 亚洲一区二区影院| 国产精品国产自线拍免费软件| 中文字幕不卡高清免费| 亚洲五月午夜免费在线视频| 91精品免费观看| 国产亚洲综合精品一区二区三区|