После удаления листа из книги Excel с Apache Poi лист остается? - PullRequest
1 голос
/ 21 сентября 2011

Я использую workbook.removeSheetAt () для удаления определенного именованного листа из книги. Однако после записи на диск рабочая книга содержит новый лист «Sheet3». Что дает? Я не создаю этот новый лист нигде в моем коде. Примечание: я использую XSSFWorkbook и все другие вещи XSSF.

Еще немного информации: Вот фрагмент из workbook.xml внутри выходного файла xlsx. Я удаляю лист с индексом = 2, якобы sheetId = 3. В шаблонной книге, с которой я начинаю, всего четыре листа.

<sheets>
    <sheet r:id="rId1" sheetId="1" name="Sheet1"/>
    <sheet r:id="rId2" sheetId="2" name="Params" state="hidden"/>
    <sheet r:id="rId4" sheetId="4" name="Warnings" state="hidden"/>
    <sheet r:id="rId3" sheetId="5" name="Sheet3"/>
</sheets>

1 Ответ

2 голосов
/ 21 сентября 2011

Apache POI использует индексы на основе листов (вроде как массив). Если у вас есть лист в позиции, которая больше, чем х, должен существовать лист в позиции х, даже если он пустой. Вы можете попробовать переместить листы, где n> x, в положение n - 1, используя setSheetOrder

Похоже, что есть сообщение об ошибке, похожее на это: Сообщение об ошибке

Как насчет сокрытия листа: setSheetHidden

...