Apache POI, вызывающий автосохранение после автофильтра

Я искал какое-то время и еще не смог найти решение.

Этот вопрос задавали раньше, но OP не получил ответа, и я не хотел воскрешать старую нить, поэтому решил задать новый вопрос. Поток OP здесь .

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть электронная таблица, которая создается с данными, полученными из базы данных, однако иногда данные в ячейках могут быть довольно длинными, поэтому требуется, чтобы POI автоматически сортировался, чтобы сохранить пользователя, который должен это сделать, но потому что я устанавливаю автофильтр перед вызовом autosize, он не совсем работает.

Я использую Apache POI 3.9.

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

Я пробовал перемещать цикл for по всему месту, в том числе в конце, где данные записываются в электронную таблицу, а также непосредственно перед потоком вывода файла, но безрезультатно.

Я также пытался использовать несколько разных шрифтов, но это тоже не сработало.

Надеюсь, кто-то может мне помочь.

благодаря

Я тот, кто написал исходную тему, которую вы упомянули. В конце я достиг решения, а не того, что искал, но, по крайней мере, он работает для меня. Я просто забыл обновить свой вопрос с помощью найденного решения.

Я создал новый метод, который повторяется над столбцами листа, который я хочу авторизовать, и делаю две вещи. Сначала я автоматически сортирую столбец, поэтому мы не будем иметь ширину, которую мы не хотим, потому что она не учитывает ширину стрелки. Затем я устанавливаю ширину столбца вручную, включая ширину стрелки. Мне пришлось немного поиграть, чтобы найти ширину стрелки (для меня это 1300). Я предполагаю, что эта ширина может работать для вас, но вы можете установить ее так, как хотите.

Как вы можете себе представить, вы должны сначала получить и автофильтр данных. После этого вы вызываете метод авторазбора столбцов, например тот, который я использовал:

private static final int WIDTH_ARROW_BUTTON = 1300; private void autosizeColumnsFromSheet(final Sheet excelSheet, final int fromColumn, final int toColumn) { for (int i = fromColumn; i <= toColumn; i++) { excelSheet.autoSizeColumn(new Short(String.valueOf(i))); try { excelSheet.setColumnWidth(i, excelSheet.getColumnWidth(i) + WIDTH_ARROW_BUTTON); } catch (final Exception e) { // don't do anything - just let autosize handle it } } } 

По моему мнению, выбранный вами текст раскрывающегося списка фильтра скрывается из-за стрелки. Если я прав, почему бы вам просто не дать отступы после авторазбора! Я имею в виду сначала автоматизировать col с помощью:

 testSheet.autoSizeColumn(ColIndex); 

затем вычислите ширину столбца и добавьте требуемое заполнение по ширине

 testSheet.setColumnWidth(ColIndex ,testSheet.getColumnWidth(ColIndex)+PaddingWidth); 

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

  int WIDTH_ARROW_BUTTON = 2 * 255; for (int i = 0; i < row.getLastCellNum(); i++) { sheet.autoSizeColumn(i); // For filter additional arrow width sheet.setColumnWidth(i, sheet.getColumnWidth(i) + WIDTH_ARROW_BUTTON); } 
  • Как удалить строки большого файла .xlsx с помощью java
  • Скопируйте все виды ОТНОШЕНИЙ из одной книги в новую книгу Apache POI XSSFWorkbook
  • API JExcel: как изменить цвет ячейки?
  • Определить установленную версию Microsoft Excel с помощью Apache POI?
  • Java. Самый эффективный метод для добавления значений, связанных с дублирующими ключами.
  • FileOutputStream (Apachhe POI) занимает слишком много времени, чтобы сэкономить
  • ApachePOI + JAVA + Excel Добавление значений в ячейку не работает
  • XSLT считывается из двух разных источников (файл XML и лист Excel)
  • Apache POI Java От 6 до 8 Разница
  • сохранение вывода программы java в листе Excel через Apachae POI
  • экземпляр класса вызывает nullPointerException
  • Interesting Posts

    Вложенный оператор IF внутри цикла for в VBA

    Как получить список именованных диапазонов, имя листа и формуляры ссылок, используя XSSF и SAX (Event API) для большого файла excel

    Формула SQRT в VBA

    excel – если ячейка не пустая, то оператор IF

    Как изменить слова в Excel

    справиться со всей строкой, если значения соответствуют

    Ошибка Range.Find.Execute «Аргумент не является обязательным» Excel VBA

    Ячейки Excel слияния, если другая ячейка соответствует

    Используйте соединение NGPSQL из VBA (Excel) для подключения к PostgreSQL

    Как установить сборки Office Interop для VS2015 после чистой установки Windows 10?

    Определить диаграмму серии X / Y, используя функцию INDIRECT для ссылки на другой лист

    Назначение номеров партий, специфичных для значения в excel, когда значения не всегда известны заранее

    Функция Non-Native, возвращающая массив. Как отобразить вывод

    Дата в ячейке, отформатированной как дата, не признанная в качестве даты

    Как добавить линию тренда в сводную таблицу?

    Давайте будем гением компьютера.