Я пытаюсь вставить логотип в каждый лист Excel, ниже приведен фрагмент кода:
int numberOfSheets = wb.getNumberOfSheets();
for(int i=0;i<numberOfSheets;i++)
{
XSSFSheet sheet = wb.getSheetAt(i);
try {
//insert a logoS
String location = "/src/main/resources/logo/logo.jpg";
InputStream is = new FileInputStream(location);
byte[] bytes = IOUtils.toByteArray(is);
int pictureIdx = wb.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
is.close();
CreationHelper creationHelper = wb.getCreationHelper();
Drawing drawing = sheet.createDrawingPatriarch();
ClientAnchor anchor = creationHelper.createClientAnchor();
anchor.setCol1(0);
anchor.setRow1(0);
Picture pict = drawing.createPicture(anchor, pictureIdx);
pict.resize(3.0,3.0);
} catch (FileNotFoundException e) {
log.info("Problem in reading logo.jpg");
} catch (IOException io) {
log.info("Problem in reading logo.jpg");
}
}
Но в результате он добавляет изображение на каждый лист. У меня есть 2 листа в Excel, но проблема в том, что когда я нажимаю на 2-й лист, изображение немного растягивается. Я изменил его размер явно, если я не укажу какое-либо число для изменения размера, тогда коэффициент растяжения измерим.
Что я могу получить от XSSFPicture Документ
public void resize(double scaleX,double scaleY)
Измените размер изображения относительно его текущего размера. Обратите внимание, что этот метод корректно работает только для книг с размером шрифта по умолчанию (Calibri 11pt для .xlsx). Если шрифт по умолчанию изменен, изображение с измененным размером может быть растянуто по вертикали или по горизонтали.
Таким образом, мои настройки также установлены по умолчанию, как указано выше в