Функция автоматического изменения размера POI Apache не работает с обернутым текстом (новая строка)

#java #apache-poi

#java #apache-poi

Вопрос:

Я пытаюсь автоматически изменить размер столбца, который повернут на 90 градусов, имеет новую строку в значении, но, похоже, автоматическое изменение размера не увеличивает ширину ячейки, если она содержит новую строку (только часть перед появлением новой строки, а другая часть скрыта), как в приведенном ниже коде,есть ли какой-либо рабочий путь для этого

     XSSFWorkbook workbook = new XSSFWorkbook();
    
    XSSFSheet sheet = workbook.createSheet();
    
    String value ="This is long text with new line ... n this is the second line";
    
    XSSFCellStyle style = workbook.createCellStyle();
    style.setRotation((short)90);
    style.setWrapText(true);
    
    Row row = sheet.createRow(1);
    
    Cell cell = row.createCell(0);
    cell.setCellStyle(style);
    cell.setCellValue(value);
    

    workbook.getSheetAt(0).autoSizeColumn(0);
  

Ответ №1:

Для меня это имеет смысл из-за setWrapText(true) . Согласно документам apache-poi для autoSizeColumn() , этот метод

Настраивает ширину столбца в соответствии с содержимым

Но перед autoSizeColumn() вызовом вы вызываете setWrapText(true) , и то, что он делает, заключается в том, чтобы поместить все ваше текстовое содержимое внутри ячейки, поэтому, поскольку текст помещается внутри ячейки, autoSizeColumn() там нечего делать, потому что текст уже помещается, и нет необходимости расширять столбец.