2009-07-14 2 views
7

Wie Bild in verschiedenen anderen HSSFCell-Objekt in Poi hinzufügen?wie Bilder in HSSFCell in Apache POI hinzufügen?

ich einige Code geschrieben haben, das Bild ist das Hinzufügen aber Problem ist, waren die Zelle I letzte Bild hinzugefügt, dass Zelle nur Bild zeigt, außer dass keine anderen Zellen Bilder zeigen ...

Ihre Hilfe zu schätzen wissen. ..

mein Code

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 METHODE: -

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; 
} 

Antwort

7

Ich hoffe, Sie haben die Lösung selbst gefunden. Wenn nicht:
das Problem ist, dass Sie für jedes Bild einen neuen Partiarch erstellen. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
Sie sollten nur eine Patriarchinstanz erstellen und die createPicture-Methode für alle Bilder verwenden.

+0

Ich fand das gleiche als Lösung ... trotzdem danke für die Antwort ... – Garudadwajan