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) работает.
это изменит размер столбца на максимальную длину ячейки.