2011-11-15 2 views
7

sheet.addImage(WritableImage obj)을 사용하여 jxl을 사용하여 Excel 파일에 이미지를 삽입 할 수 있습니다. 내 문제는 그게 WritableImage의 args를 기반으로 늘어나는 것입니다. 200x200 크기의 이미지를 삽입하면 200x200 크기의 시트에 나타나는 것처럼 삽입하는 이미지가 늘어나지 않도록 방법이 있는지 궁금합니다.이미지를 확장하지 않고 JXL을 사용하여 파일을 삽입하십시오.

+0

당신이 솔루션을 게시하시기 바랍니다 발견 했는가는 – shareef

답변

6

이것이 jxl에 대해 나를 괴롭혔던 것처럼 픽셀/인치/표준 측정 단위 대신 셀에 종횡비를 연결하지 않고 이미지를 삽입하는 방법을 찾지 못했습니다. 그렇게함으로써 과거의 연구. 당신이 할 수있는 최선의 당신이 더 나은에 삽입하거나하는 세포의 높이/폭에 이미지를 적용하는 것입니다

는 당신이 이미지를 가하고 있습니다 세포의 셀 너비/높이를 설정합니다.

JExcel FAQ - http://jexcelapi.sourceforge.net/resources/faq/

private static final double CELL_DEFAULT_HEIGHT = 17; 
private static final double CELL_DEFAULT_WIDTH = 64; 

File imageFile = new File(GIF_OR_JPG_IMAGE_FILE); 
BufferedImage input = ImageIO.read(imageFile); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(input, "PNG", baos); 
sheet.addImage(new WritableImage(1,1,input.getWidth()/CELL_DEFAULT_WIDTH, 
    input.getHeight()/CELL_DEFAULT_HEIGHT,baos.toByteArray())); 

에서

당신은 또한 사용자가 행 높이 또는 열 너비를 변경하는 경우 크기를 다시하지 않도록 WritableImage을 설정할 수 있습니다, 가로 세로 비율을 유지합니다.

WritableImage.MOVE_WITH_CELLS; 
WritableImage.NO_MOVE_OR_SIZE_WITH_CELLS; 
+0

가 답장을 보내 주셔서 감사 thankx : 포함 할 사진의 폭이 다음 4000 그럼 당신이 있다고 가정! 열의 폭과 높이가 이미지를 넣어야하는 동일한 열에서 가장 긴 단어의 길이에 영향을 받기 때문에 현재 상황에 적용 할 수 없다고 생각합니다. 그러나 나는 당신의 대답에 많은 것을 감사합니다. – Jemp

+0

아무런 문제가 없었습니다. 이전에도 이런 상황이있었습니다. 위의 작동 셀의 너비/높이를 수정할 수 있지만 (예 : 열에 AUTOSIZE 설정할 때) 수없는 경우, 그렇게 할 수있는 방법을 찾지 못했습니다. jxl에서 그렇게 할 수있는 방법을 찾으면 다른 사람들에게 도움이 될 수 있으므로 여기에 게시하십시오. – king14nyr

+0

@ king14nyr 해결책을 찾았습니까? thankx – shareef

0

는 사실이 가능하다 : 아래 중 하나를 사용하여이 작업을 수행합니다 (이미지 앵커가 잠기거나 크기 조정으로 이동하려면 선호에 기반). king14nyr @

CellView cv = excelSheetTemp.getColumnView(0); 
//get the width of the column where you want to insert the picture 
int width = forLogo.getSize(); 
//if the width is less than the size you want, set the column width to 
//the width. This will ensure that your image does not shrink 
if (width < 4000) { 
    forLogo.setSize(4000); 
    excelSheetTemp.setColumnView(0, cv); 
    width = 4000; 
} 
double c = 4000/width; 
WritableImage im = new WritableImage(0, 1, c, 3, the image file); 
excelSheetTemp.addImage(im); 
관련 문제