使用JXL将图像插入excel文件而不拉伸它

Jem*_*emp 8 java excel jxl

我可以使用jxl将图像插入到我的excel文件中sheet.addImage(WritableImage obj).我的问题是,它延伸的基础是WritableImage.我想知道是否有办法使我插入的图像不会拉伸,就像我插入200x200尺寸的图像一样,它将在工作表中显示为200x200.

kin*_*nyr 7

尽管这让我对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()));
Run Code Online (Sandbox Code Playgroud)

要保持纵横比,如果用户更改行高或列宽,您还需要将WritableImage设置为不重新调整大小.使用以下任一方法执行此操作(您的偏好基于您是否希望锁定图像锚点或通过调整大小来移动):

WritableImage.MOVE_WITH_CELLS;
WritableImage.NO_MOVE_OR_SIZE_WITH_CELLS;
Run Code Online (Sandbox Code Playgroud)