Установить фоновое изображение листа Excel - PullRequest
0 голосов
/ 16 октября 2018

Я хотел бы спросить вас, есть ли способ установить изображение в качестве фона листа с помощью Apache Excel POI?Мне удалось только найти, как установить цвет фона ячейки.Мне нужна та же функциональность, которую вы получаете, используя Excel -> Макет страницы -> Фон .

Заранее спасибо.

1 Ответ

0 голосов
/ 16 октября 2018

Ответ зависит от типа файла Excel.

Для Office Open XML формата *.xlsx Он прост:

import java.io.FileOutputStream;
import java.io.FileInputStream;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.*;

import org.apache.poi.util.IOUtils;

public class CreateExcelXSSFSheetBackgroundPicture {

 public static void main(String[] args) throws Exception {

  try (XSSFWorkbook workbook = new XSSFWorkbook(); 
       FileOutputStream out = new FileOutputStream("CreateExcelXSSFSheetBackgroundPicture.xlsx")) {

   XSSFSheet sheet = workbook.createSheet("Sheet1");

   //add picture data to this workbook.
   FileInputStream is = new FileInputStream("dummy.png");
   byte[] bytes = IOUtils.toByteArray(is);
   int pictureIdx = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
   is.close();

   //add relation from sheet to the picture data
   String rID = sheet.addRelation(null, XSSFRelation.IMAGES, workbook.getAllPictures().get(pictureIdx))
                      .getRelationship().getId();
   //set background picture to sheet
   sheet.getCTWorksheet().addNewPicture().setId(rID);

   workbook.write(out);

  }

 }
}

Для двоичного файла BIFFформат *.xls это так же сложно, как и Использование java.awt.image.BufferedImage для создания BIFF8-записи BIFF8 занимает много времени - есть ли лучший подход? .

...