Me bati para fazer entao vou postar para consultas.
Para inserir mais de duas imagens em um POI.
se for imagem de grafico passo true se nao for passo falso;
onde preciso chamar uma unica vez o metodo createDrawingPatriarch() e posso utiliza-lo varias vezes, inserindo varias imagens
EX:
public class TabelaPOI{
protected HSSFWorkbook wb;
protected HSSFSheet sheet;
HSSFPatriarch patriarch;
// seta os detalhes do workbook
public void setWorkbook(HSSFWorkbook workbook){
this.wb = workbook;
this.sheet = this.wb.getSheetAt(0);
this.sheet.setDisplayGridlines(false);
// aqui está a jogada
patriarch = this.sheet.createDrawingPatriarch();
}
/**
* Método que define o tamanho, local e tipo da imagem e adiciona na tabela
* @param request
* @param tabela
* @param index
* @throws Exception
*/
protected void setImage(String imagePath,HSSFSheet tabela, boolean bGrafico) throws Exception {
try {
// Verifica se o path passado é para grafico ou não
if(bGrafico){
byte dataGrafico[] = new byte[90000]; // o suficiente para caber a figura
new DataInputStream(new FileInputStream(imagePath)).read(dataGrafico);
HSSFClientAnchor anchorGrafico = new HSSFClientAnchor(0, 0, 100, 100,(short) 0, 10, (short) 8, 25);
anchorGrafico.setAnchorType(2);
patriarch.createPicture(anchorGrafico, loadPicture(imagePath, wb));
}else{
byte data[] = new byte[90000]; // o suficiente para caber a figura
new DataInputStream(new FileInputStream(imagePath)).read(data);
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 181, 66, (short) 0, 0, (short) 2, 4);
anchor.setAnchorType(2);
patriarch.createPicture(anchor, loadPicture(imagePath, wb));
}
} catch (Exception e) {
throw e;
}
}
/**
* Carrega uma figura na planilha apartir de uma figura em disco
* @param path
* @param wb
* @return indice
* @throws IOException
*/
public int loadPicture(String path, HSSFWorkbook wb) throws IOException {
int pictureIndex;
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
try {
fis = new FileInputStream(path);
bos = new ByteArrayOutputStream();
int c;
while ((c = fis.read()) != -1)
bos.write(c);
pictureIndex = wb.addPicture(bos.toByteArray(),
HSSFWorkbook.PICTURE_TYPE_JPEG);
} finally {
if (fis != null)
fis.close();
if (bos != null)
bos.close();
}
return pictureIndex;
}
}
No ex. uma imagem é a logo e outra é o gráfico mas contendo as duas imagens no sheets.
[]s