Можно ли установить активный диапазон с помощью Apache POI XSSF?

Я использую Apache POI XSSF для чтения и записи листов Excel.

Я знаю, что могу установить активную ячейку на листе, используя Sheet.setActiveCell(CellAddress address),

Однако я бы хотел установить для него Range, содержащий более одной ячейки на листе, как показано на рисунке ниже:

Диапазон выбран в листе Excel

Когда я сохраняю лист с несколькими ячейками, выбранными с помощью Excel, они выбираются при открытии сохраненного файла. Есть ли способ сделать это с POI XSSF?

1 ответ

Решение

Вы можете использовать следующую строку для достижения ранга в качестве активной ячейки в Excel:

    sheet.setActiveCell("A1:B2");

Надеюсь, поможет.

Начиная с версии 3.16, метод setActiveCell(String) устарел, и вы не хотите использовать устаревший метод. Я бы предложил создать собственный CellAddress:

public class CellRangeAddress extends CellAddress {

    private CellAddress start;
    private CellAddress end;

    public CellRangeAddress(final CellAddress start, final CellAddress end) {
        super(start);
        this.start = start;
        this.end = end;
    }


    @Override
    public String formatAsString() {
        if (end != null) {
            return start.formatAsString() + ":" + end.formatAsString();
        }
        return super.formatAsString();
    }
}

и использовать это как:

sheet.setActiveCell(new CellRangeAddress(new CellAddress("A1"), new CellAddress("B2")));

Не самый чистый и лучший способ, но работает без предупреждений.

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