2009-07-14 7 views
7

Come aggiungere l'immagine in diversi oggetti HSSFCell in poi?come aggiungere immagini in HSSFCell nel POI apache?

Ho scritto un codice che è l'aggiunta di immagine, ma problema è, la cellula erano ho aggiunto ultima immagine, quella cella che mostra unica immagine diverso da quello non altre cellule stanno mostrando le immagini ...

apprezzare il vostro aiuto. ..

il mio codice è

while(rs.next()){ 

    HSSFCell cell = getHSSFCell(sheet, rowNo, cellNo); 

    cell.setCellValue(new HSSFRichTextString(rs.getString("TEST_STEP_DETAILS"))); 
    cell.setCellStyle(style); 

    String annotate = rs.getString("ANNOTATE"); 

    if(annotate != null){      
     int index = getPicIndex(wb); 
     HSSFPatriarch patriarch=sheet.createDrawingPatriarch(); 
     HSSFClientAnchor anchor = new HSSFClientAnchor(400,10,655,200,(short)cellNo,(rowNo+1),(short)cellNo,(rowNo+1)); 
     anchor.setAnchorType(1); 
     patriarch.createPicture(anchor, index);           
    } 
    cellNo++; 
} 

getPicIndex METODO: -

public static int getPicIndex(HSSFWorkbook wb){ 
    int index = -1; 
    try { 
     byte[] picData = null; 
     File pic = new File("C:\\pdf\\logo.jpg"); 
     long length = pic.length(); 
     picData = new byte[ (int) length ]; 
     FileInputStream picIn = new FileInputStream(pic); 
     picIn.read(picData); 
     index = wb.addPicture(picData, HSSFWorkbook.PICTURE_TYPE_JPEG); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return index; 
} 

risposta

7

spero che tu abbia trovato la soluzione da solo. in caso contrario:
il problema è che si crea per ogni immagine un nuovo partiarch. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
È necessario creare solo un'istanza di patriarca e utilizzare il relativo metodo createPicture per tutte le immagini.

+0

Ho trovato la stessa soluzione ... comunque grazie per la risposta ... – Garudadwajan

Problemi correlati