Apache POI - Краткое руководство
Часто для создания отчетов в формате Microsoft Excel требуется программное обеспечение. Иногда ожидается, что приложение даже получит файлы Excel в качестве входных данных. Например, приложение, разработанное для финансового отдела компании, должно будет генерировать все результаты в Excel.
Любой Java-программист, который хочет создавать файлы MS Office в качестве вывода, должен использовать для этого предопределенный API, доступный только для чтения.
Что такое Apache POI?
Apache POI - это популярный API, который позволяет программистам создавать, изменять и отображать файлы MS Office с помощью программ Java. Это библиотека с открытым исходным кодом, разработанная и распространяемая Apache Software Foundation для разработки или изменения файлов Microsoft Office с помощью программы Java. Он содержит классы и методы для декодирования вводимых пользователем данных или файла в документы MS Office.
Компоненты Apache POI
Apache POI содержит классы и методы для работы со всеми документами OLE2 Compound MS Office. Список компонентов этого API приведен ниже.
POIFS(Плохая файловая система реализации обфускации) - этот компонент является основным фактором для всех других элементов POI. Он используется для явного чтения разных файлов.
HSSF (Ужасный формат электронной таблицы) - используется для чтения и записи xls формат файлов MS-Excel.
XSSF (Формат электронной таблицы XML) - используется для xlsx формат файла MS-Excel.
HPSF (Ужасный формат набора свойств) - используется для извлечения property sets файлов MS-Office.
HWPF (Ужасный формат текстового процессора) - используется для чтения и записи. doc файлы расширения MS-Word.
XWPF (Формат текстового процессора XML) - используется для чтения и записи docx файлы расширения MS-Word.
HSLF (Ужасный формат макета слайдов) - он используется для чтения, создания и редактирования презентаций PowerPoint.
HDGF (Ужасный формат диаграммы) - он содержит классы и методы для MS-Visio двоичные файлы.
HPBF (Ужасный формат PuBlisher) - используется для чтения и записи MS-Publisher файлы.
Это руководство проведет вас через процесс работы с файлами Excel с помощью Java. Поэтому обсуждение ограничивается компонентами HSSF и XSSF.
Note - Более старые версии POI поддерживают двоичные форматы файлов, такие как doc, xls, ppt и т. Д. Начиная с версии 3.5, POI поддерживает форматы файлов OOXML MS-Office, такие как docx, xlsx, pptx и т. Д.
Как и Apache POI, существуют другие библиотеки, предоставляемые различными поставщиками для создания файлов Excel. К ним относятсяAspose cells for Java по Aspose, JXL библиотеки Commons, и JExcel пользователя Team Dev.
В этой главе вы познакомитесь с некоторыми разновидностями Java Excel API и их функциями. Есть много поставщиков, которые предоставляют API, связанные с Java Excel; некоторые из них рассматриваются в этой главе.
Aspose Cells для Java
Aspose Cells for Java - это исключительно лицензированный API Java Excel, разработанный и распространяемый поставщиком Aspose. Последняя версия этого API - 8.1.2, выпущенная в июле 2014 года. Это богатый и сложный API (комбинация простых классов Java и классов AWT) для разработки компонента Excel, который может читать, писать и управлять электронными таблицами.
Обычно этот API используется следующим образом:
- Отчетность Excel, создание динамических отчетов Excel
- Высококачественный рендеринг и печать в Excel
- Импорт и экспорт данных из таблиц Excel
- Создавайте, редактируйте и конвертируйте таблицы
JXL
JXL - это сторонняя среда, разработанная для Selenium, которая поддерживает автоматизацию на основе данных в веб-браузерах (автоматическое обновление данных в веб-браузерах). Однако он также используется в качестве общей библиотеки поддержки для JExcel API, поскольку имеет основные функции для создания, чтения и записи электронных таблиц.
Основные функции заключаются в следующем -
- Создавать файлы Excel
- Импорт данных из книг и таблиц
- Получить общее количество строк и столбцов
Note - JXL поддерживает только формат файла .xls и не может обрабатывать большие объемы данных.
JExcel
JExcel - это чисто лицензионный API, предоставляемый Team Dev. Используя это, программисты могут легко читать, писать, отображать и изменять книги Excel как в.xls и .xlsxформаты. Этот API можно легко встроить с помощью Java Swing и AWT. Последняя версия этого API - Jexcel-2.6.12, выпущенная в 2009 году.
Основные особенности заключаются в следующем -
- Автоматизируйте приложение Excel, книги, электронные таблицы и т. Д.
- Встраивайте книги в приложение Java Swing как обычный компонент Swing
- Добавление прослушивателей событий в книги и электронные таблицы
- Добавьте обработчики событий для обработки поведения событий книги и электронной таблицы
- Добавьте нативных пиров для разработки настраиваемой функциональности
POI Apache
Apache POI - это 100% библиотека с открытым исходным кодом, предоставляемая Apache Software Foundation. Большинство разработчиков малых и средних приложений сильно зависят от Apache POI (HSSF + XSSF). Он поддерживает все основные функции библиотек Excel; однако его основными функциями являются рендеринг и извлечение текста.
В этой главе вы узнаете, как настроить Apache POI в системах на базе Windows и Linux. Apache POI можно легко установить и интегрировать с вашей текущей средой Java, выполнив несколько простых шагов без каких-либо сложных процедур настройки. При установке требуется администрирование пользователей.
Системные Требования
JDK | Java SE 2 JDK 1.5 или выше |
---|---|
объем памяти | 1 ГБ ОЗУ (рекомендуется) |
Дисковое пространство | Нет минимальных требований |
Версия операционной системы | Windows XP или выше, Linux |
Давайте теперь приступим к шагам по установке Apache POI.
Шаг 1. Проверьте установку Java
Прежде всего, вам необходимо установить Java Software Development Kit (SDK) в вашей системе. Чтобы убедиться в этом, выполните любую из двух команд в зависимости от платформы, на которой вы работаете.
Если установка Java была выполнена правильно, отобразится текущая версия и спецификация вашей установки Java. Пример вывода приведен в следующей таблице.
Платформа | Команда | Пример вывода |
---|---|---|
Windows | Откройте командную консоль и введите - \>java –version |
Версия Java "1.7.0_60" Среда выполнения Java (TM) SE (сборка 1.7.0_60-b19) 64-разрядная серверная виртуальная машина Java Hotspot (TM) (сборка 24.60-b09, смешанный режим) |
Linux | Откройте командный терминал и введите - $java –version |
версия java "1.7.0_25" Откройте среду выполнения JDK (rhel-2.3.10.4.el6_4-x86_64) Откройте виртуальную машину 64-разрядного сервера JDK (сборка 23.7-b01, смешанный режим) |
Мы предполагаем, что у читателей этого руководства в системе установлен Java SDK версии 1.7.0_60.
Если у вас нет Java SDK, загрузите его текущую версию с https://www.oracle.com/technetwork/java/javase/downloads/index.html и установить его.
Шаг 2. Настройте среду Java
Установите переменную среды JAVA_HOME, чтобы она указывала на расположение базового каталога, в котором установлена Java на вашем компьютере. Например,
Sr.No. | Платформа и описание |
---|---|
1 | Windows Установите JAVA_HOME в C: \ ProgramFiles \ java \ jdk1.7.0_60 |
2 | Linux Экспорт JAVA_HOME = / usr / local / java-current |
Добавьте полный путь к расположению компилятора Java в системный путь.
Sr.No. | Платформа и описание |
---|---|
1 | Windows Добавьте строку «C: \ Program Files \ Java \ jdk1.7.0_60 \ bin» в конец системной переменной PATH. |
2 | Linux Экспорт PATH = $ PATH: $ JAVA_HOME / bin / |
Выполнить команду java -version из командной строки, как описано выше.
Шаг 3: Установите Apache POI Library
Загрузите последнюю версию Apache POI с https://poi.apache.org/download.htmlи разархивируйте его содержимое в папку, откуда необходимые библиотеки могут быть связаны с вашей программой Java. Допустим, файлы собраны в папке на диске C.
На следующих изображениях показаны каталоги и файловая структура внутри загруженной папки.
Добавьте полный путь из пяти jars как показано на изображении выше КЛАССА.
Sr.No. | Платформа и описание |
---|---|
1 | Windows Добавьте следующие строки в конец пользовательской переменной КЛАСС - «C: \ poi-3.9 \ poi-3.9-20121203.jar;» «C: \ poi-3.9 \ poi-ooxml-3.9-20121203.jar;» «C: \ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;» «C: \ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;» «C: \ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;.;» |
2 | Linux Экспорт CLASSPATH = $ CLASSPATH: /usr/share/poi-3.9/poi-3.9-20121203.tar: /usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar: /usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar: /usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar: /usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar |
В этой главе объясняется несколько классов и методов Apache POI API, которые имеют решающее значение для работы с файлами Excel с использованием программ Java.
Рабочая тетрадь
Это супер-интерфейс всех классов, которые создают или поддерживают книги Excel. Он принадлежит кorg.apache.poi.ss.usermodelпакет. Два класса, реализующие этот интерфейс, следующие:
HSSFWorkbook- В этом классе есть методы для чтения и записи файлов Microsoft Excel в формате .xls. Он совместим с версиями MS-Office 97–2003.
XSSFWorkbook- В этом классе есть методы для чтения и записи файлов Microsoft Excel и OpenOffice xml в формате .xls или .xlsx. Он совместим с версиями MS-Office 2007 и новее.
HSSFWorkbook
Это класс высокого уровня под org.apache.poi.hssf.usermodelпакет. Он реализуетWorkbookинтерфейс и используется для файлов Excel в формате .xls. Ниже перечислены некоторые методы и конструкторы этого класса.
Конструкторы классов
Sr.No. | Конструктор и описание |
---|---|
1 | HSSFWorkbook() Создает новый объект HSSFWorkbook с нуля. |
2 | HSSFWorkbook(DirectoryNode directory, boolean preserveNodes) Создает новый объект HSSFWworkbook внутри определенного каталога. |
3 | HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes) Учитывая объект POIFSFileSystem и определенный каталог в нем, он создает объект SSFWorkbook для чтения указанной книги. |
4 | HSSFWorkbook(java.io.InputStream s) Создает новый объект HSSFWorkbook, используя входной поток. |
5 | HSSFWorkbook(java.io.InputStream s, boolean preserveNodes) Создает файловую систему POI вокруг вашего входного потока. |
6 | HSSFWorkbook(POIFSFileSystem fs) Создает новый объект HSSFWorkbook, используя объект POIFSFileSystem. |
7 | HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes) Учитывая объект POIFSFileSystem, он создает новый объект HSSFWorkbook для чтения указанной книги. |
Часто используемые параметры внутри этих конструкторов:
directory - Это каталог файловой системы POI, из которого выполняется обработка.
fs - Это файловая система POI, которая содержит поток книги.
preservenodes- Это необязательный параметр, который определяет, следует ли сохранять другие узлы, такие как макросы. Он потребляет много памяти, поскольку хранит всю систему POIFileSystem в памяти (если она установлена).
Note- Класс HSSFWorkbook содержит ряд методов; однако они совместимы только с форматом xls. В этом руководстве основное внимание уделяется последней версии форматов файлов Excel. Следовательно, методы класса HSSFWorkbook здесь не перечислены. Если вам требуются эти методы класса, обратитесь к API класса POI-HSSFWorkbook по адресуhttps://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.
XSSFWorkbook
Это класс, который используется для представления форматов файлов Excel как высокого, так и низкого уровня. Он принадлежит кorg.apache.xssf.usemodel пакет и реализует Workbookинтерфейс. Ниже перечислены методы и конструкторы этого класса.
Конструкторы классов
Sr.No. | Конструктор и описание |
---|---|
1 | XSSFWorkbook() Создает новый объект XSSFworkbook с нуля. |
2 | XSSFWorkbook(java.io.File file) Создает объект XSSFWorkbook из заданного файла. |
3 | XSSFWorkbook(java.io.InputStream is) Создает объект XSSFWorkbook путем буферизации всего входного потока в память и последующего открытия для него объекта OPCPackage. |
4 | XSSFWorkbook(java.lang.String path) Создает объект XSSFWorkbook по полному пути к файлу. |
Методы класса
Sr.No. | Метод и описание |
---|---|
1 | createSheet() Создает XSSFSheet для этой книги, добавляет его к листам и возвращает высокоуровневое представление. |
2 | createSheet(java.lang.String sheetname) Создает новый лист для этой книги и возвращает высокоуровневое представление. |
3 | createFont() Создает новый шрифт и добавляет его в таблицу шрифтов книги. |
4 | createCellStyle() Создает новый стиль XSSFCellStyle и добавляет его в таблицу стилей книги. |
5 | createFont() Создает новый шрифт и добавляет его в таблицу шрифтов книги. |
6 | setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow,int endRow) Устанавливает область печати данного листа в соответствии с указанными параметрами. |
Для остальных методов этого класса см. Полный документ API по адресу: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html. для получения полного списка методов.
Лист
Лист - это интерфейс под org.apache.poi.ss.usermodelпакет, и это супер-интерфейс всех классов, которые создают электронные таблицы высокого или низкого уровня с определенными именами. Самый распространенный тип электронной таблицы - это рабочий лист, который представлен в виде сетки ячеек.
HSSFSheet
Это класс под org.apache.poi.hssf.usermodelпакет. Он может создавать электронные таблицы Excel и позволяет форматировать стиль таблицы и данные таблицы.
Конструкторы классов
Sr.No. | Конструктор и описание |
---|---|
1 | HSSFSheet(HSSFWorkbook workbook) Создает новый HSSFSheet, вызываемый HSSFWorkbook для создания листа с нуля. |
2 | HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet) Создает HSSFSheet, представляющий данный объект листа. |
XSSFSheet
Это класс, который представляет собой высокоуровневое представление электронной таблицы Excel. Это подorg.apache.poi.hssf.usermodel пакет.
Конструкторы классов
Sr.No. | Конструктор и описание |
---|---|
1 | XSSFSheet() Создает новый XSSFSheet - вызывается XSSFWorkbook для создания листа с нуля. |
2 | XSSFSheet(PackagePart part, PackageRelationship rel) Создает XSSFSheet, представляющий данную часть пакета и взаимосвязь. |
Методы класса
Sr.No. | Метод и описание |
---|---|
1 | addMergedRegion(CellRangeAddress region) Добавляет объединенную область ячеек (следовательно, эти ячейки образуют одну). |
2 | autoSizeColumn(int column) Регулирует ширину столбца по размеру содержимого. |
3 | iterator() Этот метод является псевдонимом для rowIterator (), чтобы разрешить циклы foreach. |
4 | addHyperlink(XSSFHyperlink hyperlink) Регистрирует гиперссылку в коллекции гиперссылок на этом листе |
Для остальных методов этого класса см. Полный API по адресу: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.
Строка
Это интерфейс под org.apache.poi.ss.usermodelпакет. Он используется для высокоуровневого представления строки электронной таблицы. Это супер-интерфейс всех классов, представляющих строки в библиотеке POI.
XSSFRow
Это класс под org.apache.poi.xssf.usermodelпакет. Он реализует интерфейс Row, поэтому может создавать строки в электронной таблице. Ниже перечислены методы и конструкторы этого класса.
Методы класса
Sr.No. | Метод и описание |
---|---|
1 | createCell(int columnIndex) Создает новые ячейки в строке и возвращает ее. |
2 | setHeight(short height) Устанавливает высоту в коротких единицах. |
Для остальных методов этого класса перейдите по данной ссылке https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html
Ячейка
Это интерфейс под org.apache.poi.ss.usermodelпакет. Это супер-интерфейс всех классов, представляющих ячейки в строках электронной таблицы.
Ячейки могут принимать различные атрибуты, такие как пустые, числовые, дата, ошибка и т. Д. Ячейки должны иметь свои собственные номера (на основе 0) перед добавлением в строку.
XSSFCell
Это класс под org.apache.poi.xssf.usermodelпакет. Он реализует интерфейс Cell. Это высокоуровневое представление ячеек в строках электронной таблицы.
Резюме поля
Ниже перечислены некоторые поля класса XSSFCell вместе с их описанием.
Sr.No. | Тип и описание ячейки |
---|---|
1 | CELL_TYPE_BLANK Представляет пустую ячейку |
2 | CELL_TYPE_BOOLEAN Представляет логическую ячейку (истина или ложь) |
3 | CELL_TYPE_ERROR Представляет значение ошибки в ячейке |
4 | CELL_TYPE_FORMULA Представляет результат формулы в ячейке |
5 | CELL_TYPE_NUMERIC Представляет числовые данные в ячейке |
6 | CELL_TYPE_STRING Представляет строку (текст) в ячейке |
Методы класса
Sr.No. | Метод и описание |
---|---|
1 | setCellStyle(CellStyle style) Устанавливает стиль ячейки. |
2 | setCellType(int cellType) Устанавливает тип ячеек (числовой, формульный или строковый). |
3 | setCellValue(boolean value) Устанавливает логическое значение для ячейки. |
4 | setCellValue(java.util.Calendar value) Устанавливает значение даты для ячейки. |
5 | setCellValue(double value) Устанавливает числовое значение для ячейки. |
6 | setCellValue(java.lang.String str) Устанавливает строковое значение для ячейки. |
7 | setHyperlink(Hyperlink hyperlink) Назначает гиперссылку на эту ячейку. |
Остальные методы и поля этого класса можно найти по следующей ссылке: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html
XSSFCellStyle
Это класс под org.apache.poi.xssf.usermodelпакет. Он предоставит возможную информацию о формате содержимого в ячейке электронной таблицы. Он также предоставляет возможности для изменения этого формата. Он реализует интерфейс CellStyle.
Резюме поля
В следующей таблице перечислены несколько полей, унаследованных от интерфейса CellStyle.
Sr.No. | Поле и описание |
---|---|
1 | ALIGN_CENTER Выровнять по центру содержимое ячейки |
2 | ALIGN_CENTER_SELECTION Выравнивание по центру по горизонтали |
3 | ALIGN_FILL Ячейка соответствует размеру содержимого |
4 | ALIGN_JUSTIFY Подогнать содержимое ячейки к ее ширине |
5 | ALIGN_LEFT Выровнять содержимое ячейки по левому краю |
6 | ALIGN_RIGHT Выровнять содержимое ячейки по правому краю |
7 | BORDER_DASH_DOT Стиль ячейки с тире и точкой |
8 | BORDER_DOTTED Стиль ячейки с пунктирной рамкой |
9 | BORDER_DASHED Стиль ячейки с пунктирной рамкой |
10 | BORDER_THICK Стиль ячейки с толстой рамкой |
11 | BORDER_THIN Стиль ячейки с тонкой рамкой |
12 | VERTICAL_BOTTOM Выровняйте содержимое ячейки по вертикали внизу |
13 | VERTICAL_CENTER Выровняйте содержимое ячейки по вертикали по центру |
15 | VERTICAL_JUSTIFY Выровняйте и выровняйте содержимое ячейки по вертикали |
16 | VERTICAL_TOP Вертикальное выравнивание по верхнему краю |
Конструкторы классов
Sr.No. | Конструктор и описание |
---|---|
1 | XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme) Создает стиль ячейки из поставляемых деталей |
2 | XSSFCellStyle(StylesTable stylesSource) Создает стиль пустой ячейки |
Методы класса
S.No | Метод и описание |
---|---|
1 | setAlignment(short align) Устанавливает тип горизонтального выравнивания ячейки |
2 | setBorderBottom(short border) Устанавливает тип границы для нижней границы ячейки |
3 | setBorderColor(XSSFCellBorder.BorderSide side, XSSFColor color) Устанавливает цвет выделенной границы |
4 | setBorderLeft(Short border) Устанавливает тип границы для левой границы ячейки |
5 | setBorderRight(short border) Устанавливает тип границы для правой границы ячейки |
6 | setBorderTop(short border) Устанавливает тип границы для верхней границы ячейки |
7 | setFillBackgroundColor(XSSFColor color) Устанавливает цвет заливки фона, представленный как значение XSSFColor. |
8 | setFillForegroundColor(XSSFColor color) Устанавливает цвет заливки переднего плана, представленный как значение XSSFColor. |
9 | setFillPattern(short fp) Задает информацию о заливке ячеек для заливки ячеек узором и сплошным цветом. |
10 | setFont(Font font) Устанавливает шрифт для этого стиля. |
11 | setRotation(short rotation) Устанавливает степень поворота текста в ячейке. |
12 | setVerticalAlignment(short align) Устанавливает тип вертикального выравнивания ячейки. |
Для остальных методов и полей этого класса перейдите по следующей ссылке: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html
HSSFColor
Это класс под org.apache.poi.hssf.utilпакет. Он предоставляет разные цвета в виде вложенных классов. Обычно эти вложенные классы представлены с помощью собственных индексов. Он реализует интерфейс Color.
Вложенные классы
Все вложенные классы этого класса статичны, и каждый класс имеет свой индекс. Эти вложенные классы цвета используются для форматирования ячеек, такого как содержимое ячейки, граница, передний план и фон. Ниже перечислены некоторые из вложенных классов.
Sr.No. | Имена классов (цвета) |
---|---|
1 | HSSFColor.AQUA |
2 | HSSFColor.АВТОМАТИЧЕСКИЙ |
3 | HSSFColor.BLACK |
4 | HSSFColor.BLUE |
5 | HSSFColor.BRIGHT_GREEN |
6 | HSSFColor.BRIGHT_GRAY |
7 | HSSFColor.CORAL |
8 | HSSFColor.DARK_BLUE |
9 | HSSFColor.DARK_GREEN |
10 | HSSFColor.SKY_BLUE |
11 | HSSFColor.WHITE |
12 | HSSFColor.YELLOW |
Методы класса
Важен только один метод этого класса, который используется для получения значения индекса.
Sr.No. | Method & Description |
---|---|
1 | getIndex() This method is used to get the index value of a nested class. |
For the remaining methods and nested classes, refer the following link: https://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html
XSSFColor
This is a class under the org.apache.poi.xssf.usermodel package. It is used to represent color in a spreadsheet. It implements the Color interface. Listed below are some of its methods and constructors.
Class Constructors
Sr.No. | Constructor & Description |
---|---|
1 | XSSFColor() Creates a new instance of XSSFColor. |
2 | XSSFColor(byte[] rgb) Creates a new instance of XSSFColor using RGB. |
3 | XSSFColor(java.awt.Color clr) Creates a new instance of XSSFColor using the Color class from the awt package. |
Class Methods
Sr.No. | Method & Description |
---|---|
1 | setAuto(boolean auto) Sets a boolean value to indicate that the ctColor is automatic and the system ctColor is dependent. |
2 | setIndexed(int indexed) Sets indexed ctColor value as system ctColor. |
For the remaining methods, visit the following link: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColor.html
XSSFFont
This is a class under the org.apache.poi.xssf.usermodel package. It implements the Font interface and therefore it can handle different fonts in a workbook.
Class Constructor
Sr.No. | Constructor & Description |
---|---|
1 | XSSFFont() Creates a new XSSFont instance. |
Class Methods
Sr.No. | Method & Description |
---|---|
1 | setBold(boolean bold) Sets a Boolean value for the 'bold' attribute. |
2 | setColor(short color) Sets the indexed color for the font. |
3 | setColor(XSSFColor color) Sets the color for the font in Standard Alpha RGB color value. |
4 | setFontHeight(short height) Sets the font height in points. |
5 | setFontName(java.lang.String name) Sets the name for the font. |
6 | setItalic(boolean italic) Sets a Boolean value for the 'italic' property. |
For the remaining methods, go through the following link: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html
XSSFHyperlink
This is a class under the org.apache.poi.xssf.usermodel package. It implements the Hyperlink interface. It is used to set a hyperlink to the cell contents of a spreadsheet.
Fields
The fields of this class are as follows. Here, fields mean the types of hyperlinks used.
Sr.No. | Field & Description |
---|---|
1 | LINK_DOCUMENT Used to link any other document |
2 | LINK_EMAIL Used to link email |
3 | LINK_FILE Used to link any other file in any format |
4 | LINK_URL Used to link a web URL |
Class Methods
Sr.No. | Method & Description |
---|---|
1 | setAddress(java.lang.String address) Hyperlink address. |
For the remaining methods, visit the following link: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlink.html
XSSFCreationHelper
This is a class under the org.apache.poi.xssf.usermodel package. It implements the CreationHelper interface. It is used as a support class for formula evaluation and setting up hyperlinks.
Class methods
Sr.No. | Method & Description |
---|---|
1 | createFormulaEvaluator() Creates an XSSFFormulaEvaluator instance, the object that evaluates formula cells. |
2 | createHyperlink(int type) Creates a new XSSFHyperlink. |
For the remaining methods, refer the following link: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelper.html
XSSFPrintSetup
This is a class under the org.apache.poi.xsssf.usermodel package. It implements the PrintSetup interface. It is used to set print page size, area, options, and settings.
Class Methods
Sr.No. | Method & Description |
---|---|
1 | setLandscape(boolean ls) Sets a boolean value to allow or block landscape printing. |
2 | setLeftToRight(boolean ltor) Sets whether to go left to right or top down in ordering while printing. |
3 | setPaperSize(short size) Sets the paper size. |
For the remaining methods, visit the following link: https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetup.html
Here the term 'Workbook' means Microsoft Excel file. After completion of this chapter, you will be able to create new Workbooks and open existing Workbooks with your Java program.
Create Blank Workbook
The following simple program is used to create a blank Microsoft Excel Workbook.
import java.io.*;
import org.apache.poi.xssf.usermodel.*;
public class CreateWorkBook {
public static void main(String[] args)throws Exception {
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create file system using specific name
FileOutputStream out = new FileOutputStream(new File("createworkbook.xlsx"));
//write operation workbook using file out object
workbook.write(out);
out.close();
System.out.println("createworkbook.xlsx written successfully");
}
}
Let us save the above Java code as CreateWorkBook.java, and then compile and execute it from the command prompt as follows −
$javac CreateWorkBook.java $java CreateWorkBook
If your system environment is configured with the POI library, it will compile and execute to generate the blank Excel file named createworkbook.xlsx in your current directory and display the following output in the command prompt.
createworkbook.xlsx written successfully
Open Existing Workbook
Use the following code to open an existing workbook.
import java.io.*;
import org.apache.poi.xssf.usermodel.*;
public class OpenWorkBook {
public static void main(String args[])throws Exception {
File file = new File("openworkbook.xlsx");
FileInputStream fIP = new FileInputStream(file);
//Get the workbook instance for XLSX file
XSSFWorkbook workbook = new XSSFWorkbook(fIP);
if(file.isFile() && file.exists()) {
System.out.println("openworkbook.xlsx file open successfully.");
} else {
System.out.println("Error to open openworkbook.xlsx file.");
}
}
}
Save the above Java code as OpenWorkBook.java, and then compile and execute it from the command prompt as follows −
$javac OpenWorkBook.java $java OpenWorkBook
It will compile and execute to generate the following output.
openworkbook.xlsx file open successfully.
After opening a workbook, you can perform read and write operations on it.
This chapter explains how to create a spreadsheet and manipulate it using Java. Spreadsheet is a page in an Excel file; it contains rows and columns with specific names.
After completing this chapter, you will be able to create a spreadsheet and perform read operations on it.
Create a Spreadsheet
First of all, let us create a spreadsheet using the referenced classes discussed in the earlier chapters. By following the previous chapter, create a workbook first and then we can go on and create a sheet.
The following code snippet is used to create a spreadsheet.
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
Rows on Spreadsheet
Spreadsheets have a grid layout. The rows and columns are identified with specific names. The columns are identified with alphabets and rows with numbers.
The following code snippet is used to create a row.
XSSFRow row = spreadsheet.createRow((short)1);
Write into a Spreadsheet
Let us consider an example of employee data. Here the employee data is given in a tabular form.
Emp Id | Emp Name | Designation |
---|---|---|
Tp01 | Gopal | Technical Manager |
TP02 | Manisha | Proof Reader |
Tp03 | Masthan | Technical Writer |
Tp04 | Satish | Technical Writer |
Tp05 | Krishna | Technical Writer |
The following code is used to write the above data into a spreadsheet.
import java.io.File;
import java.io.FileOutputStream;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Writesheet {
public static void main(String[] args) throws Exception {
//Create blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank sheet
XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");
//Create row object
XSSFRow row;
//This data needs to be written (Object[])
Map < String, Object[] > empinfo =
new TreeMap < String, Object[] >();
empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
//Iterate over data and write to sheet
Set < String > keyid = empinfo.keySet();
int rowid = 0;
for (String key : keyid) {
row = spreadsheet.createRow(rowid++);
Object [] objectArr = empinfo.get(key);
int cellid = 0;
for (Object obj : objectArr) {
Cell cell = row.createCell(cellid++);
cell.setCellValue((String)obj);
}
}
//Write the workbook in file system
FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
workbook.write(out);
out.close();
System.out.println("Writesheet.xlsx written successfully");
}
}
Save the above Java code as Writesheet.java, and then compile and run it from the command prompt as follows −
$javac Writesheet.java $java Writesheet
It will compile and execute to generate an Excel file named Writesheet.xlsx in your current directory and you will get the following output in the command prompt.
Writesheet.xlsx written successfully
The Writesheet.xlsx file looks as follows.
Read from a Spreadsheet
Let us consider the above excel file named Writesheet.xslx as input. Observe the following code; it is used for reading the data from a spreadsheet.
import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Readsheet {
static XSSFRow row;
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet spreadsheet = workbook.getSheetAt(0);
Iterator < Row > rowIterator = spreadsheet.iterator();
while (rowIterator.hasNext()) {
row = (XSSFRow) rowIterator.next();
Iterator < Cell > cellIterator = row.cellIterator();
while ( cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
System.out.print(cell.getNumericCellValue() + " \t\t ");
break;
case Cell.CELL_TYPE_STRING:
System.out.print(
cell.getStringCellValue() + " \t\t ");
break;
}
}
System.out.println();
}
fis.close();
}
}
Let us keep the above code in Readsheet.java file, and then compile and run it from the command prompt as follows −
$javac Readsheet.java $java Readsheet
If your system environment is configured with the POI library, it will compile and execute to generate the following output in the command prompt.
EMP ID EMP NAME DESIGNATION
tp01 Gopal Technical Manager
tp02 Manisha Proof Reader
tp03 Masthan Technical Writer
tp04 Satish Technical Writer
tp05 Krishna Technical Writer
Any data that you enter into a spreadsheet is always stored in a cell. We use the labels of rows and columns to identify a cell. This chapter describes how to manipulate data in cells in a spreadsheet using Java programming.
Create a Cell
You need to create a row before creating a cell. A row is nothing but a collection of cells.
The following code snippet is used for creating a cell.
//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");
//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);
//create first cell on created row
XSSFCell cell = row.createCell(0);
Types of Cells
The cell type specifies whether a cell can contain strings, numeric value, or formulas. A string cell cannot hold numeric values and a numeric cell cannot hold strings. Given below are the types of cells, their values, and type syntax.
Type of cell value | Type Syntax |
---|---|
Blank cell value | XSSFCell.CELL_TYPE_BLANK |
Boolean cell value | XSSFCell.CELL.TYPE_BOOLEAN |
Error cell value | XSSFCell.CELL_TYPE_ERROR |
Numeric cell value | XSSFCell.CELL_TYPE_NUMERIC |
String cell value | XSSFCell.CELL_TYPE_STRING |
The following code is used to create different types of cells in a spreadsheet.
import java.io.File;
import java.io.FileOutputStream;
import java.util.Date;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TypesofCells {
public static void main(String[] args)throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("cell types");
XSSFRow row = spreadsheet.createRow((short) 2);
row.createCell(0).setCellValue("Type of Cell");
row.createCell(1).setCellValue("cell value");
row = spreadsheet.createRow((short) 3);
row.createCell(0).setCellValue("set cell type BLANK");
row.createCell(1);
row = spreadsheet.createRow((short) 4);
row.createCell(0).setCellValue("set cell type BOOLEAN");
row.createCell(1).setCellValue(true);
row = spreadsheet.createRow((short) 5);
row.createCell(0).setCellValue("set cell type ERROR");
row.createCell(1).setCellValue(XSSFCell.CELL_TYPE_ERROR );
row = spreadsheet.createRow((short) 6);
row.createCell(0).setCellValue("set cell type date");
row.createCell(1).setCellValue(new Date());
row = spreadsheet.createRow((short) 7);
row.createCell(0).setCellValue("set cell type numeric");
row.createCell(1).setCellValue(20 );
row = spreadsheet.createRow((short) 8);
row.createCell(0).setCellValue("set cell type string");
row.createCell(1).setCellValue("A String");
FileOutputStream out = new FileOutputStream(new File("typesofcells.xlsx"));
workbook.write(out);
out.close();
System.out.println("typesofcells.xlsx written successfully");
}
}
Save the above code in a file named TypesofCells.java, compile and execute it from the command prompt as follows.
$javac TypesofCells.java $java TypesofCells
If your system is configured with the POI library, then it will compile and execute to generate an Excel file named typesofcells.xlsx in your current directory and display the following output.
typesofcells.xlsx written successfully
The typesofcells.xlsx file looks as follows.
Cell Styles
Here you can learn how to do cell formatting and apply different styles such as merging adjacent cells, adding borders, setting cell alignment and filling with colors.
The following code is used to apply different styles to cells using Java programming.
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class CellStyle {
public static void main(String[] args)throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("cellstyle");
XSSFRow row = spreadsheet.createRow((short) 1);
row.setHeight((short) 800);
XSSFCell cell = (XSSFCell) row.createCell((short) 1);
cell.setCellValue("test of merging");
//MEARGING CELLS
//this statement for merging cells
spreadsheet.addMergedRegion(
new CellRangeAddress(
1, //first row (0-based)
1, //last row (0-based)
1, //first column (0-based)
4 //last column (0-based)
)
);
//CELL Alignment
row = spreadsheet.createRow(5);
cell = (XSSFCell) row.createCell(0);
row.setHeight((short) 800);
// Top Left alignment
XSSFCellStyle style1 = workbook.createCellStyle();
spreadsheet.setColumnWidth(0, 8000);
style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
cell.setCellValue("Top Left");
cell.setCellStyle(style1);
row = spreadsheet.createRow(6);
cell = (XSSFCell) row.createCell(1);
row.setHeight((short) 800);
// Center Align Cell Contents
XSSFCellStyle style2 = workbook.createCellStyle();
style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
style2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
cell.setCellValue("Center Aligned");
cell.setCellStyle(style2);
row = spreadsheet.createRow(7);
cell = (XSSFCell) row.createCell(2);
row.setHeight((short) 800);
// Bottom Right alignment
XSSFCellStyle style3 = workbook.createCellStyle();
style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
style3.setVerticalAlignment(XSSFCellStyle.VERTICAL_BOTTOM);
cell.setCellValue("Bottom Right");
cell.setCellStyle(style3);
row = spreadsheet.createRow(8);
cell = (XSSFCell) row.createCell(3);
// Justified Alignment
XSSFCellStyle style4 = workbook.createCellStyle();
style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
style4.setVerticalAlignment(XSSFCellStyle.VERTICAL_JUSTIFY);
cell.setCellValue("Contents are Justified in Alignment");
cell.setCellStyle(style4);
//CELL BORDER
row = spreadsheet.createRow((short) 10);
row.setHeight((short) 800);
cell = (XSSFCell) row.createCell((short) 1);
cell.setCellValue("BORDER");
XSSFCellStyle style5 = workbook.createCellStyle();
style5.setBorderBottom(XSSFCellStyle.BORDER_THICK);
style5.setBottomBorderColor(IndexedColors.BLUE.getIndex());
style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
style5.setLeftBorderColor(IndexedColors.GREEN.getIndex());
style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
style5.setRightBorderColor(IndexedColors.RED.getIndex());
style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
style5.setTopBorderColor(IndexedColors.CORAL.getIndex());
cell.setCellStyle(style5);
//Fill Colors
//background color
row = spreadsheet.createRow((short) 10 );
cell = (XSSFCell) row.createCell((short) 1);
XSSFCellStyle style6 = workbook.createCellStyle();
style6.setFillBackgroundColor(HSSFColor.LEMON_CHIFFON.index );
style6.setFillPattern(XSSFCellStyle.LESS_DOTS);
style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
spreadsheet.setColumnWidth(1,8000);
cell.setCellValue("FILL BACKGROUNG/FILL PATTERN");
cell.setCellStyle(style6);
//Foreground color
row = spreadsheet.createRow((short) 12);
cell = (XSSFCell) row.createCell((short) 1);
XSSFCellStyle style7 = workbook.createCellStyle();
style7.setFillForegroundColor(HSSFColor.BLUE.index);
style7.setFillPattern( XSSFCellStyle.LESS_DOTS);
style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
cell.setCellValue("FILL FOREGROUND/FILL PATTERN");
cell.setCellStyle(style7);
FileOutputStream out = new FileOutputStream(new File("cellstyle.xlsx"));
workbook.write(out);
out.close();
System.out.println("cellstyle.xlsx written successfully");
}
}
Сохраните приведенный выше код в файле с именем CellStyle.java, скомпилируйте и выполните его из командной строки следующим образом.
$javac CellStyle.java $java CellStyle
Будет создан файл Excel с именем cellstyle.xlsx в вашем текущем каталоге и отобразите следующий вывод.
cellstyle.xlsx written successfully
Файл cellstyle.xlsx выглядит следующим образом.
В этой главе объясняется, как устанавливать разные шрифты, применять стили и отображать текст под разными углами направления в электронной таблице Excel.
Каждая система поставляется в комплекте с огромным набором шрифтов, таких как Arial, Impact, Times New Roman и т. Д. Коллекция также может быть обновлена новыми шрифтами, если требуется. Точно так же существуют различные стили, в которых может отображаться шрифт, например полужирный, курсив, подчеркивание, зачеркивание и т. Д.
Шрифты и стили шрифтов
Следующий код используется для применения определенного шрифта и стиля к содержимому ячейки.
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class FontStyle {
public static void main(String[] args)throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
XSSFRow row = spreadsheet.createRow(2);
//Create a new font and alter it.
XSSFFont font = workbook.createFont();
font.setFontHeightInPoints((short) 30);
font.setFontName("IMPACT");
font.setItalic(true);
font.setColor(HSSFColor.BRIGHT_GREEN.index);
//Set font into style
XSSFCellStyle style = workbook.createCellStyle();
style.setFont(font);
// Create a cell with a value and set style to it.
XSSFCell cell = row.createCell(1);
cell.setCellValue("Font Style");
cell.setCellStyle(style);
FileOutputStream out = new FileOutputStream(new File("fontstyle.xlsx"));
workbook.write(out);
out.close();
System.out.println("fontstyle.xlsx written successfully");
}
}
Давайте сохраним приведенный выше код в файле с именем FontStyle.java. Скомпилируйте и выполните его из командной строки следующим образом.
$javac FontStyle.java $java FontStyle
Он создает файл Excel с именем fontstyle.xlsx в вашем текущем каталоге и отобразите следующий вывод в командной строке.
fontstyle.xlsx written successfully
В fontstyle.xlsx файл выглядит следующим образом.
Направление текста
Здесь вы можете узнать, как задать направление текста под разными углами. Обычно содержимое ячеек отображается горизонтально, слева направо и под углом 00; однако при необходимости вы можете использовать следующий код для поворота направления текста.
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TextDirection {
public static void main(String[] args)throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Text direction");
XSSFRow row = spreadsheet.createRow(2);
XSSFCellStyle myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 0);
XSSFCell cell = row.createCell(1);
cell.setCellValue("0D angle");
cell.setCellStyle(myStyle);
//30 degrees
myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 30);
cell = row.createCell(3);
cell.setCellValue("30D angle");
cell.setCellStyle(myStyle);
//90 degrees
myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 90);
cell = row.createCell(5);
cell.setCellValue("90D angle");
cell.setCellStyle(myStyle);
//120 degrees
myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 120);
cell = row.createCell(7);
cell.setCellValue("120D angle");
cell.setCellStyle(myStyle);
//270 degrees
myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 270);
cell = row.createCell(9);
cell.setCellValue("270D angle");
cell.setCellStyle(myStyle);
//360 degrees
myStyle = workbook.createCellStyle();
myStyle.setRotation((short) 360);
cell = row.createCell(12);
cell.setCellValue("360D angle");
cell.setCellStyle(myStyle);
FileOutputStream out = new FileOutputStream(new File("textdirection.xlsx"));
workbook.write(out);
out.close();
System.out.println("textdirection.xlsx written successfully");
}
}
Сохраните приведенный выше код в TextDirectin.java файл, затем скомпилируйте и выполните его из командной строки следующим образом.
$javac TextDirection.java $java TextDirection
Он будет скомпилирован и выполнится для создания файла Excel с именем textdirection.xlsx в вашем текущем каталоге и отобразите следующий вывод в командной строке.
textdirection.xlsx written successfully
В textdirection.xlsx файл выглядит следующим образом.
В этой главе вы познакомитесь с процессом применения различных формул к ячейкам с помощью программирования на Java. Основная цель приложения Excel - поддерживать числовые данные путем применения к ним формул.
В формуле мы передаем динамические значения или расположение значений на листе Excel. Выполнив эту формулу, вы получите желаемый результат. В следующей таблице перечислены несколько основных формул, которые часто используются в Excel.
Операция | Синтаксис |
---|---|
Добавление нескольких чисел | = СУММ (Loc1: Locn) or = СУММ (n1; n2;) |
Считать | = COUNT (Loc1: Locn) or = СЧЁТ (n1; n2;) |
Степень двух чисел | = МОЩНОСТЬ (Loc1; Loc2) or = МОЩНОСТЬ (число; мощность) |
Максимум нескольких номеров | = МАКС (Loc1: Locn) or = МАКС (n1; n2;) |
Продукт | = ПРОДУКТ (Loc1: Locn) or = ПРОДУКТ (n1; n2;) |
Факториал | = ФАКТ (Locn) or = ФАКТ (число) |
Абсолютное число | = ABS (Locn) or = ABS (число) |
Сегодняшняя дата | = СЕГОДНЯ () |
Преобразует строчные буквы | = НИЖНИЙ (Locn) or = НИЖНИЙ (текст) |
Квадратный корень | = КОРЕНЬ (locn) or = КОРЕНЬ (число) |
Следующий код используется для добавления формул в ячейку и ее выполнения.
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Formula {
public static void main(String[] args)throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("formula");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell = row.createCell(1);
cell.setCellValue("A = ");
cell = row.createCell(2);
cell.setCellValue(2);
row = spreadsheet.createRow(2);
cell = row.createCell(1);
cell.setCellValue("B = ");
cell = row.createCell(2);
cell.setCellValue(4);
row = spreadsheet.createRow(3);
cell = row.createCell(1);
cell.setCellValue("Total = ");
cell = row.createCell(2);
// Create SUM formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SUM(C2:C3)");
cell = row.createCell(3);
cell.setCellValue("SUM(C2:C3)");
row = spreadsheet.createRow(4);
cell = row.createCell(1);
cell.setCellValue("POWER =");
cell=row.createCell(2);
// Create POWER formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("POWER(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("POWER(C2,C3)");
row = spreadsheet.createRow(5);
cell = row.createCell(1);
cell.setCellValue("MAX = ");
cell = row.createCell(2);
// Create MAX formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("MAX(C2,C3)");
cell = row.createCell(3);
cell.setCellValue("MAX(C2,C3)");
row = spreadsheet.createRow(6);
cell = row.createCell(1);
cell.setCellValue("FACT = ");
cell = row.createCell(2);
// Create FACT formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("FACT(C3)");
cell = row.createCell(3);
cell.setCellValue("FACT(C3)");
row = spreadsheet.createRow(7);
cell = row.createCell(1);
cell.setCellValue("SQRT = ");
cell = row.createCell(2);
// Create SQRT formula
cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
cell.setCellFormula("SQRT(C5)");
cell = row.createCell(3);
cell.setCellValue("SQRT(C5)");
workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));
workbook.write(out);
out.close();
System.out.println("fromula.xlsx written successfully");
}
}
Сохраните приведенный выше код как Formula.java а затем скомпилируйте и выполните его из командной строки следующим образом.
$javac Formula.java $java Formula
Будет создан файл Excel с именем formula.xlsx в вашем текущем каталоге и отобразите следующий вывод в командной строке.
fromula.xlsx written successfully
В formula.xlsx файл выглядит следующим образом.
В этой главе объясняется, как добавить гиперссылки к содержимому ячейки. Обычно гиперссылки используются для доступа к любому веб-URL, электронной почте или внешнему файлу.
В следующем коде показано, как создавать гиперссылки в ячейках.
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class HyperlinkEX {
public static void main(String[] args) throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Hyperlinks");
XSSFCell cell;
CreationHelper createHelper = workbook.getCreationHelper();
XSSFCellStyle hlinkstyle = workbook.createCellStyle();
XSSFFont hlinkfont = workbook.createFont();
hlinkfont.setUnderline(XSSFFont.U_SINGLE);
hlinkfont.setColor(HSSFColor.BLUE.index);
hlinkstyle.setFont(hlinkfont);
//URL Link
cell = spreadsheet.createRow(1).createCell((short) 1);
cell.setCellValue("URL Link");
XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.tutorialspoint.com/");
cell.setHyperlink((XSSFHyperlink) link);
cell.setCellStyle(hlinkstyle);
//Hyperlink to a file in the current directory
cell = spreadsheet.createRow(2).createCell((short) 1);
cell.setCellValue("File Link");
link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_FILE);
link.setAddress("cellstyle.xlsx");
cell.setHyperlink(link);
cell.setCellStyle(hlinkstyle);
//e-mail link
cell = spreadsheet.createRow(3).createCell((short) 1);
cell.setCellValue("Email Link");
link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
link.setAddress("mailto:[email protected]?" + "subject = Hyperlink");
cell.setHyperlink(link);
cell.setCellStyle(hlinkstyle);
FileOutputStream out = new FileOutputStream(new File("hyperlink.xlsx"));
workbook.write(out);
out.close();
System.out.println("hyperlink.xlsx written successfully");
}
}
Сохраните приведенный выше код как HyperlinkEX.java. Скомпилируйте и выполните его из командной строки следующим образом.
$javac HyperlinkEX.java $java HyperlinkEX
Будет создан файл Excel с именем hyperlink.xlsx в вашем текущем каталоге и отобразите следующий вывод в командной строке.
hyperlink.xlsx written successfully
В hyperlink.xlsx файл выглядит следующим образом.
В этой главе объясняется, как установить область печати в электронной таблице. Обычная область печати в таблицах Excel располагается слева вверху направо вниз. Область печати можно настроить в соответствии с вашими требованиями. Это означает, что вы можете распечатать определенный диапазон ячеек из всей электронной таблицы, настроить размер бумаги, распечатать содержимое с включенными линиями сетки и т. Д.
Следующий код используется для настройки области печати в электронной таблице.
import java.io.File;
import java.io.FileOutputStream;
import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class PrintArea {
public static void main(String[] args)throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("Print Area");
//set print area with indexes
workbook.setPrintArea(
0, //sheet index
0, //start column
5, //end column
0, //start row
5 //end row
);
//set paper size
spreadsheet.getPrintSetup().setPaperSize(XSSFPrintSetup.A4_PAPERSIZE);
//set display grid lines or not
spreadsheet.setDisplayGridlines(true);
//set print grid lines or not
spreadsheet.setPrintGridlines(true);
FileOutputStream out = new FileOutputStream(new File("printarea.xlsx"));
workbook.write(out);
out.close();
System.out.println("printarea.xlsx written successfully");
}
}
Сохраним приведенный выше код как PrintArea.java. Скомпилируйте и выполните его из командной строки следующим образом.
$javac PrintArea.java $java PrintArea
Будет создан файл с именем printarea.xlsx в вашем текущем каталоге и отобразите следующий вывод в командной строке.
printarea.xlsx written successfully
В приведенном выше коде мы не добавляли никаких значений ячеек. Следовательноprintarea.xlsxэто пустой файл. Но вы можете заметить на следующем рисунке, что предварительный просмотр печати показывает область печати с линиями сетки.
В этой главе объясняется, как библиотека POI взаимодействует с базой данных. С помощью JDBC вы можете извлекать данные из базы данных и вставлять эти данные в электронную таблицу с помощью библиотеки POI. Рассмотрим базу данных MySQL для операций SQL.
Запись в Excel из базы данных
Предположим, что следующая таблица данных сотрудников называется emp_tbl должен быть получен из базы данных MySQL test.
EMP ID | EMP NAME | DEG | ЗАРПЛАТА | ОТДЕЛЕНИЕ |
---|---|---|---|---|
1201 | Гопал | Технический менеджер | 45000 | ЭТО |
1202 | Маниша | Корректор | 45000 | Тестирование |
1203 | Мастханвали | Технический писатель | 45000 | ЭТО |
1204 | Kiran | Hr Admin | 40000 | HR |
1205 | Кранти | Операционный администратор | 30000 | Админ |
Используйте следующий код, чтобы получить данные из базы данных и вставить их в электронную таблицу.
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelDatabase {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test" ,
"root" ,
"root"
);
Statement statement = connect.createStatement();
ResultSet resultSet = statement.executeQuery("select * from emp_tbl");
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet spreadsheet = workbook.createSheet("employe db");
XSSFRow row = spreadsheet.createRow(1);
XSSFCell cell;
cell = row.createCell(1);
cell.setCellValue("EMP ID");
cell = row.createCell(2);
cell.setCellValue("EMP NAME");
cell = row.createCell(3);
cell.setCellValue("DEG");
cell = row.createCell(4);
cell.setCellValue("SALARY");
cell = row.createCell(5);
cell.setCellValue("DEPT");
int i = 2;
while(resultSet.next()) {
row = spreadsheet.createRow(i);
cell = row.createCell(1);
cell.setCellValue(resultSet.getInt("eid"));
cell = row.createCell(2);
cell.setCellValue(resultSet.getString("ename"));
cell = row.createCell(3);
cell.setCellValue(resultSet.getString("deg"));
cell = row.createCell(4);
cell.setCellValue(resultSet.getString("salary"));
cell = row.createCell(5);
cell.setCellValue(resultSet.getString("dept"));
i++;
}
FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
workbook.write(out);
out.close();
System.out.println("exceldatabase.xlsx written successfully");
}
}
Сохраним приведенный выше код как ExcelDatabase.java. Скомпилируйте и выполните его из командной строки следующим образом.
$javac ExcelDatabase.java $java ExcelDatabase
Будет создан файл Excel с именем exceldatabase.xlsx в вашем текущем каталоге и отобразите следующий вывод в командной строке.
exceldatabase.xlsx written successfully
В exceldatabase.xlsx файл выглядит следующим образом.