Несмотря на то, что это беспокоило меня о jxl, я никогда не находил способ вставить изображение без привязки соотношения сторон к ячейкам вместо пикселей / дюймов / какой-либо стандартной единицы измерения, и я провел достойное исследованиев прошлом при этом.
Лучшее, что вы можете сделать, - это адаптировать изображения к высоте / ширине ячеек, в которые вы вставляете их, или даже лучше, установить ширину / высоту ячеек для ячеек.вы вставляете изображение.
Из часто задаваемых вопросов JExcel- 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;