Apache poi excel ширина столбца
Мне нужно получить ширину столбца по умолчанию из XSSFSheet .
XSSFSheet имеет метод под названием getDefaultColumnWidth() :
Метод возвращает каждый раз одно и то же значение, даже если я изменяю ширину столбца по умолчанию в пределах Excel.
Очевидно, что этот метод должен возвращать ширину столбца по умолчанию, но я думаю, что на самом деле он не возвращает правильное значение.
Причина
Я проверил с самим Excel, что именно происходит:
- Я изменил ширину столбца по умолчанию в пределах Excel и сохранил лист.
- Затем я просматриваю изменения Excel, внесенные в соответствующий файл xml:
- Атрибут defaultColWidth был изменен.
- Атрибут baseColWidth остался прежним.
Таким образом, 'real' и правильная ширина столбца по умолчанию хранятся в атрибуте defaultColWidth . Поэтому метод должен возвращать этот атрибут, но вместо этого он возвращает базовую ширину столбца (как вы можете видеть в приведенной выше реализации).
Решение
По моему скромному мнению, метод сверху должен возвращать pr.getDefaultColWidth() , а не pr.getBaseColWidth() .
Я думаю, что либо этот метод неправильно реализован, либо я просто слишком глуп, чтобы найти правильный метод, который возвращает правильное значение.
Как я могу получить правильную ширину столбца по умолчанию из Excel XSSFSheet с POI Apache?
С уважением винклеррр
1 ответ
Я использую Apache POI 3.7 с Spring MVC 3.1. Как установить высоту строки excel по умолчанию в apache POI? Я пробовал sheet.setDefaultRowHeight((short) 100) и sheet.setDefaultRowHeightInPoints(100) но это не работает. Есть какие-нибудь предложения по этой проблеме? Спасибо.
Как получить высоту и ширину листа excel с именем range area из HSSFWorkbook POI API . Я получил одну ссылку от google, но не смог получить высоту и ширину именованной индексной области листа excel. Заранее спасибо. Да, он называется range, и вы хотите, чтобы высота и ширина ячеек были получены с.
Выше ясно сказано,что по умолчанию должно быть 8, если столбцы не определяют свои собственные. Может быть, вы используете неправильный API.
Похожие вопросы:
Есть ли способ изменить размер страницы и макет при создании документа Excel с помощью Apache POI? По умолчанию A4-вертикальный, а мне нужен A6-горизонтальный (альбомный). Я не думаю, что этот.
Могу ли я прочитать столбец листа excel с помощью apache poi. (без использования итератора строк) for (Row row : sheet) < Cell firstCell = row.getCell(0); // Printing Stuff >Я знаю, что.
Я пишу инструмент в Java, используя Apache POI API для преобразования XML в MS Excel. В моем вводе XML я получаю ширину столбца в пунктах. Но Apache POI API имеет немного странную логику установки.
Я использую Apache POI 3.7 с Spring MVC 3.1. Как установить высоту строки excel по умолчанию в apache POI? Я пробовал sheet.setDefaultRowHeight((short) 100) и sheet.setDefaultRowHeightInPoints(100).
Как получить высоту и ширину листа excel с именем range area из HSSFWorkbook POI API . Я получил одну ссылку от google, но не смог получить высоту и ширину именованной индексной области листа excel.
Я использую Java и Apache POI для форматирования листа Excel. Я хочу отформатировать ячейку в долларах. Используя предложение в базовом формате валюты Excel с Apache POI , я получаю, что ячейка.
Я пытаюсь получить значения из листа excel с помощью apache-poi, а затем ввести эти значения в базу данных mysql. Используя apache-poi, я могу получить значения с помощью XSSFSheet.rowIterator().
Можно ли разобрать excel листа с помощью Apache Poi в javascript?? Мне нужно разобрать лист excel с помощью apache poi и получить ответ в виде объекта json. Я попробовал код, который прилагается к.
Как получить доступ к значению ячейки из таблицы pivot с листа excel с помощью Apache POI? Я попытался использовать XSSFPivotTable.getPivotTables, но не смог получить доступ к значению ячейки.
Есть ли какой-нибудь способ вычислить или есть ли встроенный API, чтобы получить текущий Cell position листа Excel с помощью Apache Poi?? Например, A10 , F61 , AG34, BK567 и т. д. Примечание : Я.
у меня возникли проблемы с получением точного размера, который я хочу с моими вычислениями для columnWidth и моей расчетной высоты строки, потому что я не понимаю документацию.
С точки зрения columnWidth, я использую строку кода sheet.setColumnWidth(int columnIndex, int width); но я не понимаю как правильно рассчитать ширину. Я понимаю, что он говорит:
поэтому у меня есть точный пример листа Excel того, что я хочу создать, и когда я выделяю столбец и выбираю ширину столбца, он говорит мне, что это 9.67 (94 pixels) . Так что же это значит? Как подключить это к моему уравнению, чтобы получить значение ширины, которое я хочу?
другая проблема, с которой я сталкиваюсь, заключается в том, что я использую код, который я нашел в другом месте (даже на SO) для динамического вычисления высоты строки. Но моя проблема в том, что я не понимаю, что mergedCellWidth в приведенном ниже коде должны быть в строку nextPos = measurer.nextOffset(mergedCellWidth) . Кажется, я не могу получить это значение правильно, и это испортит, сколько строк, по его мнению, должно быть, и поэтому моя высота строки не право.
Я думаю, что в моем случае примеры были бы лучшим ответом для меня. Спасибо!
Ну, похоже, никто не может мне помочь. После проб и ошибок, я нашел пару приближений, которые работали хорошо для меня.
по поводу моего sheet.setColumnWidth(int columnIndex, int width); проблема, я нашел хорошее приближение следующим образом:
- в Excel перейдите в" обычный " вид.
- зайти в формат -> ширина столбца. и обратите внимание на значение
- используйте следующую формулу для расчета ширины: width = ([number from step 2] * 256) + 200
это на самом деле кажется работают довольно хорошо.
по поводу моей второй проблемы о том, что mergedCellWidth должно быть, я нашел следующие работы ok для этого значения: (float) (sheet.getColumnWidth(columnIndex) / 256 * 4) . Он работает намного лучше для строк меньшей длины, и когда строки становятся больше, строка начинает становиться слишком большой (поэтому я предполагаю, что коэффициент 4 немного слишком много, но он работает для моих целей).
Я также проверил источник POI Apache для столбцов автоматической калибровки, чтобы попытаться получить представление о том, что происходит. Не много направления, хотя в том, что означают единицы, и я не смог следить за их расчетами и воспроизводить их в моем шаблоне Excel.
в Excel 2007, с файлом XSSF (xlsx), следующий код, кажется, работает отлично:
У меня возникают проблемы с получением точного размера, который я хочу, с моими вычислениями для columnWidth и моей рассчитанной высоты строки, потому что я не понимаю документацию.
Что касается columnWidth, я использую строку кода sheet.setColumnWidth(int columnIndex, int width); , но не понимаю, как правильно рассчитать ширину. Я понимаю, что там говорится:
Итак, у меня есть точный пример листа Excel того, что я хочу создать, и когда я выделяю столбец и выбираю ширину столбца, он сообщает мне, что это 9.67 (94 pixels) . Так что это значит? Как мне вставить это в свое уравнение, чтобы получить желаемое значение ширины?
Другая проблема, с которой я столкнулся, заключается в том, что я использую код, который я нашел в другом месте (даже в SO), для динамического вычисления высоты строки. Но моя проблема в том, что я не понимаю, что mergedCellWidth в приведенном ниже коде должно быть в строке, которая говорит nextPos = measurer.nextOffset(mergedCellWidth) . Кажется, я не могу правильно понять это значение, и это испортило то, сколько строк, по его мнению, должно быть, и, следовательно, моя высота строки неправильная.
Думаю, в моем случае примеры были бы для меня лучшим ответом. Спасибо!
2 ответа
Что ж, не похоже, что кто-то действительно может мне помочь. После проб и ошибок я нашел пару приближений, которые мне подошли.
Что касается моей проблемы sheet.setColumnWidth(int columnIndex, int width); , я нашел хорошее приближение:
- В Excel перейдите в режим «Обычный».
- Перейдите в Формат -> Ширина столбца . и обратите внимание на значение
- Используйте следующую формулу для вычисления ширины: width = ([number from step 2] * 256) + 200
На самом деле это работает довольно хорошо.
Что касается моей второй проблемы с тем, каким должен быть mergedCellWidth , я обнаружил, что для этого значения нормально работает следующее: (float) (sheet.getColumnWidth(columnIndex) / 256 * 4) . Он работает намного лучше для строк меньшей длины, и по мере того, как строки становятся больше, строка начинает становиться слишком большой (поэтому я предполагаю, что коэффициент 4 слишком большой, но он работает для моих целей).
Я также проверил источник Apache POI для столбцов автоматического изменения размера, чтобы попытаться понять, что происходит. Тем не менее, нет особого указания на то, что означают единицы, и я не мог проследить их расчеты и воспроизвести их в моем шаблоне Excel.
1 ответ
Я уже довольно давно использую Apache POI, и он отлично работает, но я не могу найти надежного ответа о поддержке фильтров в библиотеке. Для справки, я имею в виду опцию фильтра, доступную на вкладке data в excel, которая позволяет отображать все уникальные значения столбца в виде поля со списком.
Вы можете установить ширину столбца по умолчанию, которая управляет всеми столбцами на листе, у которых нет собственного пользовательского набора ширины. Используйте метод setDefaultColumnWidth .
Установите ширину столбца по умолчанию для листа (если столбцы не определяют свою собственную ширину) в символах
Отдельные столбцы могут переопределить это значение по умолчанию с помощью метода setColumnWidth . Ширина здесь составляет 1/256 части символа, что отличается от единиц ширины по умолчанию.
Установите ширину (в единицах 1/256 ширины символа)
Похожие вопросы:
Я пишу инструмент в Java, используя Apache POI API для преобразования XML в MS Excel. В моем вводе XML я получаю ширину столбца в пунктах. Но Apache POI API имеет немного странную логику установки.
У меня есть ширина значения столбца в процентах, и я хочу преобразовать его в ширину excel, чтобы установить ширину столбца. Как мы это делаем в java, исходя из того, что ширина столбца вычисляется.
Кто-нибудь знает, как скопировать существующие данные столбца в новый лист в файле excel или в новую книгу по Apache poi? Тип данных-double и date.
Я уже довольно давно использую Apache POI, и он отлично работает, но я не могу найти надежного ответа о поддержке фильтров в библиотеке. Для справки, я имею в виду опцию фильтра, доступную на.
Я использую пример BigGridDemo для POI, так как мне нужно сгенерировать excel с миллионом записей. Однако я не могу установить ширину столбца в шаблоне.
Требование Мне нужно получить ширину столбца по умолчанию из XSSFSheet . Подход XSSFSheet имеет метод под названием getDefaultColumnWidth() : public int getDefaultColumnWidth() < CTSheetFormatPr pr.
Я работаю над проектом, который включает в себя чтение данных excel с использованием Apache POI. У меня есть ситуация, когда я должен узнать максимальную длину столбца. Например Лист имеет 3 строки.
У меня возникла проблема в excel при использовании Apache POI. Я могу создавать строки, но иногда я нахожусь в ситуации, когда я хотел бы начать только с определенного столбца. Таким образом, можно.
Я создаю файл Excel через Apache POI XSSF и блокирую лист паролем, чтобы пользователь не мог изменить значение первых двух строк и первых пяти столбцов (я блокирую лист и разрешаю редактирование.
мне нужно изменить имя автора сгенерированного excel на apache poi в java. В настоящее время имя автора всех сгенерированных apache - Apache POI, мне нужно его изменить. кто-нибудь может мне в этом.
Читайте также:
- Как исправить расходный ордер в 1с
- Каким способом в проекте изыскания программы кредо топограф возможен поиск грубых ошибок измерений
- Назначение процессора в персональном компьютере обрабатывать одну программу в данный
- Как сделать два аккаунта в яндекс браузере
- Программа для зарядки телефона через повербанк