Apache POI вставить изображение без привязки

Я создаю файл Excel в Java, используя Apache POI, он работает, но вставленное изображение привязано к столбцам / строкам. Есть 2 проблемы с этим методом:

  1. Изображение не сохраняет первоначальный размер (немного растягивается).

  2. При изменении размера столбцов / строк изображение растягивается. Есть ли способ вставить изображение в Excel без привязки? (так же, как при использовании Excel / Insert / Picture)

Я использую следующий пример со страницы документа Apache POI:

//create a new workbook
Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();

//add picture data to this workbook.
InputStream is = new FileInputStream("image1.jpeg");
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
is.close();

CreationHelper helper = wb.getCreationHelper();

//create sheet
Sheet sheet = wb.createSheet();

// Create the drawing patriarch.  This is the top level container for all shapes. 
Drawing drawing = sheet.createDrawingPatriarch();

//add a picture shape
ClientAnchor anchor = helper.createClientAnchor();
//set top-left corner of the picture,
//subsequent call of Picture#resize() will operate relative to it
anchor.setCol1(3);
anchor.setRow1(2);
Picture pict = drawing.createPicture(anchor, pictureIdx);

//auto-size picture relative to its top-left corner
pict.resize();

//save workbook
String file = "picture.xls";
if(wb instanceof XSSFWorkbook) file += "x";
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();

Спасибо за Ваш ответ.

1 ответ

Вероятно, из-за этого комментария в методе 'resize' javadoc:

Обратите внимание, что этот метод работает правильно только для книг с размером шрифта по умолчанию (Arial 10pt для.xls и Calibri 11pt для.xlsx). Если шрифт по умолчанию изменен, измененное изображение может быть растянуто вертикально или горизонтально.

Другие вопросы по тегам