Apache poi excel большая ширина авто столбца

Я пытаюсь создать большой Excel 2010 с 30 столбцами и 1 миллионом записей с новейшей версией Apache. Я создаю, как описано в этой ссылке http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java. но я хочу, чтобы ширина столбца была такой же, как размер текста заголовка столбца. но когда я делаю это после создания excel со следующим кодом

for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) {
            sheet.setColumnWidth(x, 20*256);
        }

он занимает огромное время и даже с размером кучи 5gb, я теряю память.

спасибо

барана

Ответ 1

Сначала Выберите первую строку или заголовок, потому что только заголовок может дать вам максимальное количество ячеек в строке.

HSSFRow row = wb.getSheetAt(0).getRow(0);

Затем используйте autoSizeColumn для каждого столбца этой строки

for(int colNum = 0; colNum<row.getLastCellNum();colNum++)   
    wb.getSheetAt(0).autoSizeColumn(colNum);

Это установит ширину столбца такой же, как ширина его заголовка.

Ответ 2

Я также предлагаю вам взглянуть на использование sxssf. Он использует XML-формат для загрузки в Excel. Это намного быстрее и лучший способ создания больших отчетов или сеток. Функция автосохранения в xssf по умолчанию занимает слишком много времени.

Ответ 3

sheet.autoSizeColumn(columnNumber) работает. это изменит размер столбца на максимальную длину ячейки.