Установить режим просмотра страницы в файле Excel с помощью Apache Poi - PullRequest
2 голосов
/ 22 октября 2011

В Excel предусмотрены различные режимы просмотра листа: обычный, макет страницы, просмотр разрыва страницы. (В Excel 2010: на вкладке просмотра). Режим просмотра сохраняется отдельно для каждого листа в рабочей книге и восстанавливается при повторном открытии.

Я пытаюсь найти способ установить режим просмотра, используя либо HSSF, либо XSSF. В старом бинарном формате найти ответ, к сожалению, совершенно невозможно. В 2007+ различие в формате OOXML дает основной ответ, глядя на xl / worksheets / sheet1.xml В обычном режиме:

<sheetViews>
 <sheetView rightToLeft="1" tabSelected="1" zoomScaleNormal="100" workbookViewId="0">
</sheetViews>

В макете страницы:

<sheetViews>
 <sheetView rightToLeft="1" tabSelected="1" view="pageLayout" zoomScaleNormal="100" workbookViewId="0"/>
</sheetViews>

Это второй тег на каждом листе. Есть ли опция XSSF API для редактирования этого атрибута? (или единственным решением проблемы будет распаковка файла, его редактирование и перепаковка)

Спасибо!

1 Ответ

2 голосов
/ 24 октября 2011

XSSF не раскрывает это напрямую, но вы можете получить это, если хотите

Из объекта XSSFSheet вызовите getCTWorksheet, чтобы получить низкоуровневый объект XML, поддерживающий лист. CTWorksheet предоставляет метод getSheetViews. Вам понравится хочется что-то вроде:

 CTSheetView view = sheet.getCTWorksheet().getSheetViews().getSheetViewArray(0);
 view.setView(STSheetViewType.PAGE_LAYOUT);
...