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

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

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

    千里冰封
    JAVA 濃香四溢
    posts - 151,comments - 2801,trackbacks - 0
    昨天,我們看了一下POI操作EXCEL的簡單例子,我們只是插入了一些字符串而已,但是現實的應用中,經常需要在EXCEL中插入圖片或者圖形.這個時候,應該怎么辦呢,我們先看一下下面的例子
    /*
     * Test3.java
     *
     * Created on 2007年9月13日, 上午9:14
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     
    */

    package test1;

    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.FileOutputStream;
    import java.net.URL;
    import javax.imageio.ImageIO;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
    import org.apache.poi.hssf.usermodel.HSSFFont;
    import org.apache.poi.hssf.usermodel.HSSFPatriarch;
    import org.apache.poi.hssf.usermodel.HSSFRichTextString;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.hssf.util.HSSFColor;

    /**
     *
     * 
    @author hadeslee
     
    */
    public class Test3 {
        
        
    /** Creates a new instance of Test3 */
        
    public Test3() {
        }
        
    public static void main(String[] args)throws Exception {
            
    //聲明一個工作薄
            HSSFWorkbook wb=new HSSFWorkbook();
            
    //生成一個表格
            HSSFSheet sheet=wb.createSheet("表格1");
            
    //生成一個列
            HSSFRow row=sheet.createRow(0);
            
    //生成一個樣式
            HSSFCellStyle style=wb.createCellStyle();
            
    //設置這些樣式
            style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
            style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
            style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            style.setBorderRight(HSSFCellStyle.BORDER_THIN);
            style.setBorderTop(HSSFCellStyle.BORDER_THIN);
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            
    //生成一個字體
            HSSFFont font=wb.createFont();
            font.setColor(HSSFColor.VIOLET.index);
            font.setFontHeightInPoints((
    short)16);
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
            
    //把字體應用到當前的樣式
            style.setFont(font);
            
    //聲明一個畫圖的頂級管理器
            HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
            
    //填充單元格
            for(short i=0;i<5;i++){
                
    //聲明一個單元格
                HSSFCell cell=row.createCell(i);
                
    switch(i){
                    
    case 0:
                        
    //設置普通文本
                        cell.setCellValue(new HSSFRichTextString("普通文本"));
                        
    break;
                    
    case 1:
                        
    //設置為形狀
                        HSSFClientAnchor a1 = new HSSFClientAnchor( 001023255, (short10, (short10 );
                        HSSFSimpleShape shape1 
    = patriarch.createSimpleShape(a1);
                        
    //這里可以設置形狀的樣式
                        shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL);
                        
                        
    break;
                    
    case 2:
                        
    //設置為布爾量
                        cell.setCellValue(true);
                        
    break;
                    
    case 3:
                        
    //設置為double值
                        cell.setCellValue(12.5);
                        
    break;
                    
    case 4:
                        
    //設置為圖片]
                        URL url=Test3.class.getResource("hello.jpg");
                        insertImage(wb,patriarch,getImageData(ImageIO.read(url)),
    0,4,1);
                        
    break;
                        
                }
                
                
    //設置單元格的樣式
                cell.setCellStyle(style);
            }
            FileOutputStream fout
    =new FileOutputStream("我的第一個EXCEL.xls");
            
    //輸出到文件
            wb.write(fout);
            fout.close();
        }
        
    //自定義的方法,插入某個圖片到指定索引的位置
        private static void insertImage(HSSFWorkbook wb,HSSFPatriarch pa,byte[] data,int row,int column,int index){
            
    int x1=index*250;
            
    int y1=0;
            
    int x2=x1+255;
            
    int y2=255;
            HSSFClientAnchor anchor 
    = new HSSFClientAnchor(x1,y1,x2,y2,(short)column,row,(short)column,row);
            anchor.setAnchorType(
    2);
            pa.createPicture(anchor , wb.addPicture(data,HSSFWorkbook.PICTURE_TYPE_JPEG));
        }
        
    //從圖片里面得到字節數組
        private static  byte[] getImageData(BufferedImage bi){
            
    try{
                ByteArrayOutputStream bout
    =new ByteArrayOutputStream();
                ImageIO.write(bi,
    "PNG",bout);
                
    return bout.toByteArray();
            }
    catch(Exception exe){
                exe.printStackTrace();
                
    return null;
            }
        }
    }

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



    盡管千里冰封
    依然擁有晴空

    你我共同品味JAVA的濃香.
    posted on 2007-09-13 09:49 千里冰封 閱讀(2179) 評論(2)  編輯  收藏 所屬分類: JAVASE

    FeedBack:
    # re: 利用POI操作EXCEL文檔(2)
    2007-09-14 17:53 | 大頭菜
    不錯的文章...  回復  更多評論
      
    # re: 利用POI操作EXCEL文檔(2)
    2009-12-08 09:32 | 青龍
    怎么樣在原來存在的excel中添加另一sheet呢  回復  更多評論
      
    主站蜘蛛池模板: 国产午夜无码精品免费看| 全部免费毛片在线播放| 日本亚洲欧洲免费天堂午夜看片女人员 | 国产亚洲精品线观看动态图| 中文字幕亚洲免费无线观看日本| 在线观看免费高清视频| 精品国产污污免费网站| 不卡视频免费在线观看| 在线观看亚洲免费视频| 丁香六月婷婷精品免费观看| 亚洲视频在线免费观看| 国产激情久久久久影院老熟女免费| 国产精品深夜福利免费观看| 亚洲一区二区三区在线观看蜜桃| 日本成人在线免费观看| 182tv免费视频在线观看| 亚洲精品无码久久久久YW| 精品亚洲综合久久中文字幕| 天天看片天天爽_免费播放| 亚洲午夜福利在线视频| 免费A级毛片无码免费视| 亚洲午夜国产精品无卡| 亚洲性在线看高清h片| 成人免费一区二区三区 | 亚洲最大中文字幕| 精品免费久久久久久久| 亚洲第一永久在线观看| 亚洲精品免费网站| 中文字幕亚洲码在线| 成人免费视频国产| 亚洲黄色免费电影| 伊人久久五月丁香综合中文亚洲| 亚洲精品无码久久千人斩| 国产精品jizz在线观看免费| 免费能直接在线观看黄的视频 | 亚洲成AV人片一区二区密柚| 国产成人一区二区三区免费视频| 97碰公开在线观看免费视频| 国产精品九九久久免费视频| 亚洲成a人无码亚洲成www牛牛| 亚洲国产成人久久|