SpreadSheetAddImage — добавить изображение заданной ширины и высоты.

Я использую SpreadSheetAddImage в ColdFusion 10, чтобы добавить изображение в заголовок моей электронной таблицы. Проблема, с которой я сталкиваюсь, заключается в том, что функция занимает позицию привязки, например, если я хочу запустить изображение из ячейки 1, строки 1, в ячейку 5, строку 5, я бы предоставил «1,1,5,5» в качестве аргумента привязки. . Однако, если в моей таблице есть небольшие данные в этих ячейках, изображение будет искажено. Как я могу добавить изображение с заданной шириной и высотой?

SpreadsheetAddImage(excelSheet,"C:\myimagepath\excelReportHeaderImage.jpg","1,1,5,5");

person Phil    schedule 14.06.2016    source источник
comment
Насколько я знаю, CF не поддерживает явный размер. Единственный способ изменить ширину и высоту — изменить ширину/высоту закрепленных строк и столбцов. Это можно сделать с помощью POI, но система измерения Excel немного запутана, поэтому явный изменить размер не так просто, как вы думаете. Если вас не волнует переполнение, вы можете попробовать привязать изображение к верхнему левому углу ячейки и изменить его размер по мере необходимости. Немного проще, чем другой метод, но не такой точный и по-прежнему требует POI.   -  person Leigh    schedule 15.06.2016
comment
См. также ячейку изображения POI Apache в HSSF и XSSF.   -  person Leigh    schedule 15.06.2016
comment
@Leigh - я в порядке с переполнением, но как мне привязать его только к верхней левой ячейке (A1) и позволить изображению растягиваться по мере необходимости   -  person Phil    schedule 15.06.2016
comment
@Leigh, понял. Большое вам спасибо за вашу помощь!   -  person Phil    schedule 15.06.2016


Ответы (1)


Разобрался, благодаря помощи Ли. В ColdFusion 10 я сделал вот что...

// Add our report header (must add AFTER the columns have been resized or it will reset the image size)
headerImageBytes = FileReadBinary(image_file_path);
headerImageIndex = poiWorkbook.addPicture( headerImageBytes, poiWorkbook.PICTURE_TYPE_JPEG );
helper = poiWorkbook.getCreationHelper();
drawing = poiSheet.createDrawingPatriarch();
anchor = helper.createClientAnchor();
anchor.setCol1(0);
anchor.setCol2(5);
anchor.setRow1(0);
anchor.setRow2(5);
picture = drawing.createPicture( anchor, headerImageIndex );
picture.resize();

Теперь изображение отображается в ячейках A1: E5, и это ИСТИННЫЙ размер изображения. Если вам нужно настроить размер, я считаю, что вы можете передать масштаб в метод изменения размера.

person Phil    schedule 15.06.2016
comment
Хорошо сделано! Теперь, почему CF не делает этого из коробки ;-)? - person Leigh; 15.06.2016
comment
@Ли - понятия не имею. Я бы хотел, чтобы люди в Adobe действительно продумали это немного лучше. - person Phil; 15.06.2016
comment
да. Я колеблюсь между симпатией к проблемам интеграции сторонней библиотеки и раздражением по поводу того, что ряд основных функций либо недоступен, либо работает не так, как вы ожидаете. Раздражение обычно побеждает ;-) - person Leigh; 15.06.2016