- HSSF and XSSF Examples
- HSSF and XSSF common examples
- Available Examples
- Business Plan
- Calendar
- Loan Calculator
- Timesheet
- Conditional Formats
- Formula Examples
- Add Dimensioned Image
- Aligned Cells
- Cell Style Details
- Linked Dropdown Lists
- Common SS Performance Test
- ToHtml
- ToCSV
- HSSF-only Examples
- XSSF-only Examples
- Apache POI, взаимодействие с Excel
- Компоненты Apache POI
- Описание компонентов
- Список компонентов
- Подключение Apache POI к проекту
- Классы и методы Apache POI для работы с файлами Excel
- Рабочая книга HSSFWorkbook, XSSFWorkbook
- Конструкторы класса HSSFWorkbook
- Конструкторы класса XSSFWorkbook
- Основные методы HSSFWorkbook, XSSFWorkbook
- Классы листов книги, HSSFSheet, XSSFSheet
- Основные методы классов работы с листами
- Классы строк HSSFRow, XSSFRow
- Основные методы классов HSSFRow, XSSFRow
- Классы ячеек HSSFCell, XSSFCell
- Основные методы классов HSSFCell, XSSFCell
- Классы стилей ячеек HSSFCellStyle, XSSFCellStyle
- Классы шрифтов HSSFFont, XSSFFont
- Reading and Writing Data to Excel File in Java using Apache POI
- Writing an Excel File
HSSF and XSSF Examples
HSSF and XSSF common examples
Apache POI comes with a number of examples that demonstrate how you can use the POI API to create documents from «real life». The examples below based on common XSSF-HSSF interfaces so that you can generate either *.xls or *.xlsx output just by setting a command-line argument:
All sample source is available in SVN
In addition, there are a handful of HSSF only and XSSF only examples as well.
Available Examples
The following examples are available:
Business Plan
The BusinessPlan application creates a sample business plan with three phases, weekly iterations and time highlighting. Demonstrates advanced cell formatting (number and date formats, alignments, fills, borders) and various settings for organizing data in a sheet (freezed panes, grouped rows).
Calendar
The Calendar demo creates a multi sheet calendar. Each month is on a separate sheet.
Loan Calculator
The LoanCalculator demo creates a simple loan calculator. Demonstrates advance usage of cell formulas and named ranges.
Timesheet
The Timesheet demo creates a weekly timesheet with automatic calculation of total hours. Demonstrates advance usage of cell formulas.
Conditional Formats
The ConditionalFormats demo is a collection of short examples showing what you can do with Excel conditional formatting in POI:
- Highlight cells based on their values
- Highlight a range of cells based on a formula
- Hide errors
- Hide the duplicate values
- Highlight duplicate entries in a column
- Highlight items that are in a list on the worksheet
- Highlight payments that are due in the next thirty days
- Shade alternating rows on the worksheet
- Shade bands of rows on the worksheet
Formula Examples
The CalculateMortgage example demonstrates a simple user-defined function to calculate principal and interest.
The CheckFunctionsSupported example shows how to test what functions and formulas aren’t supported from a given file.
The SettingExternalFunction example demonstrates how to use externally provided (third-party) formula add-ins.
The UserDefinedFunctionExample example demonstrates how to invoke a User Defined Function for a given Workbook instance using POI’s UDFFinder implementation.
Add Dimensioned Image
The AddDimensionedImage example demonstrates how to add an image to a worksheet and set that images size to a specific number of millimetres irrespective of the width of the columns or height of the rows.
Aligned Cells
The AligningCells example demonstrates how various alignment options work.
Cell Style Details
The CellStyleDetails example demonstrates how to read excel styles for cells.
Linked Dropdown Lists
The LinkedDropDownLists example demonstrates one technique that may be used to create linked or dependent drop down lists.
Common SS Performance Test
The SSPerformanceTest example provides a way to create simple example files of varying sizes, and to calculate how long they take. Useful for benchmarking your system, and to also test if slow performance is due to Apache POI itself or to your own code.
ToHtml
The ToHtml example shows how to display a spreadsheet in HTML using the classes for spreadsheet display.
ToCSV
The ToCSV example demonstrates one way to convert an Excel spreadsheet into a CSV file.
HSSF-only Examples
All the HSSF-only examples can be found in SVN
XSSF-only Examples
All the XSSF-only examples can be found in SVN
Apache POI, взаимодействие с Excel
Apache POI представляет собой API, который позволяет использовать файлы MS Office в Java приложениях. Данная библиотека разрабатывается и распространяется Apache Software Foundation и носит открытый характер. Apache POI включает классы и методы для чтения и записи информации в документы MS Office.
Компоненты Apache POI
Описание компонентов
HSSF | Horrible Spreadsheet Format | Компонент чтения и записи файлов MS-Excel, формат XLS |
XSSF | XML Spreadsheet Format | Компонент чтения и записи файлов MS-Excel, формат XLSX |
HPSF | Horrible Property Set Format | Компонент получения наборов свойств файлов MS-Office |
HWPF | Horrible Word Processor Format | Компонент чтения и записи файлов MS-Word, формат DOC |
XWPF | XML Word Processor Format | Компонент чтения и записи файлов MS-Word, формат DOCX |
HSLF | Horrible Slide Layout Format | Компонент чтения и записи файлов PowerPoint, формат PPT |
XSLF | XML Slide Layout Format | Компонент чтения и записи файлов PowerPoint, формат PPTX |
HDGF | Horrible DiaGram Format | Компонент работы с файлами MS-Visio, формат VSD |
XDGF | XML DiaGram Format | Компонент работы с файлами MS-Visio, формат VSDX |
Список компонентов
Наименование (артeфакт) | Необходимые компоненты |
---|---|
poi | commons-logging, commons-codec, commons-collections, log4j |
poi-scratchpad | poi |
poi-ooxml | poi, poi-ooxml-schemas |
poi-ooxml-schemas | xmlbeans |
poi-examples | poi, poi-scratchpad, poi-ooxml |
ooxml-schemas | xmlbeans |
ooxml-security | xmlbeans |
Подключение Apache POI к проекту
Для подключения Apache POI к проекту необходимо скачать соответствующие библиотеки с официального сайта https://poi.apache.org/download.html.
Если в проекте используется фреймворк maven, то необходимо установить одну из следующих зависимостей (версия может быть более новой) :
На странице описания примера чтения файлов Excel приведен проект, включающий необходимый набор файлов библиотеки Apache POI (poi-3.16.jar, poi-ooxml-3.16.jar, poi-ooxml-schemas-3.16.jar) и сопутствующих библиотек.
На странице рассматриваются следующие классы, используемые для работы с файлами Excel из приложений Java.
- рабочая книга — HSSFWorkbook, XSSFWorkbook
- лист книги — HSSFSheet, XSSFSheet
- строка — HSSFRow, XSSFRow
- ячейка — HSSFCell, XSSFCell
- стиль — стили ячеек HSSFCellStyle, XSSFCellStyle
- шрифт — шрифт ячеек HSSFFont, XSSFFont
Поскольку описание всех классов и методов не разместить на одной странице, то ниже по тексту приводятся ссылки для перехода к исходной документации.
Классы и методы Apache POI для работы с файлами Excel
Рабочая книга HSSFWorkbook, XSSFWorkbook
- HSSFWorkbook
- org.apache.poi.hssf.usermodel
- класс чтения и записи файлов Microsoft Excel в формате .xls, совместим с версиями MS-Office 97-2003;
- XSSFWorkbook
- org.apache.poi.xssf.usermodel
- класс чтения и записи файлов Microsoft Excel в формате .xlsx, совместим с MS-Office 2007 или более поздней версии.
Конструкторы класса HSSFWorkbook
preservenodes является необязательным параметром, который определяет необходимость сохранения узлов типа макросы.
Конструкторы класса XSSFWorkbook
Основные методы HSSFWorkbook, XSSFWorkbook
Метод | Описание |
---|---|
createSheet () | Создание страницы книги HSSFSheet, XSSFSheet |
createSheet (String name) | Создание страницы с определенным наименованием |
CreateFont () | Создание шрифта |
createCellStyle () | Создание стиля |
С полным перечнем всех методов класса XSSFWorkbook можно познакомиться на странице http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html.
Классы листов книги, HSSFSheet, XSSFSheet
- org.apache.poi.hssf.usermodel.HSSFSheet
- org.apache.poi.xssf.usermodel.XSSFSheet
Классы HSSFSheet, XSSFSheet включают свойства и методы создания строк, определения размера колонок, слияния ячеек в одну область и т.д.
Основные методы классов работы с листами
Метод | Описание |
---|---|
addMergedRegion (CellRangeAddress) | Определение области слияния ячеек страницы |
autoSizeColumn (int column) | Автоматическая настройка ширины колонки column (отсчет от 0) |
setColumnWidth (int column, int width) | Настройка ширины колонки column (отсчет от 0) |
createRow (int row) | Создание строки row (отсчет от 0) |
getRow (int row) | Получение ссылки на строку row (отсчет от 0) |
С полным перечнем всех методов класса XSSFSheet можно познакомиться на странице https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html
Классы строк HSSFRow, XSSFRow
- org.apache.poi.hssf.usermodel.HSSFRow
- org.apache.poi.xssf.usermodel.XSSFRow
Классы HSSFRow, XSSFRow включают свойства и методы работы со строками, создания ячеек в строке и т.д.
Основные методы классов HSSFRow, XSSFRow
Метод | Описание |
---|---|
setHeight (short) | Определение высоты строки |
getHeight() | Получение значения высоты в twips’ах (1/20) |
getHeightInPoints() | Получение значение высоты |
createCell (int) | Создание ячейки в строке (отсчет от 0) |
getCell(int) | Получение ссылки на ячейку |
getFirstCellNum() | Получение номера первой ячейки в строке |
setRowStyle(CellStyle) | Определение стиля всей строки |
С полным перечнем всех методов класса XSSFRow можно познакомиться на странице http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html
Классы ячеек HSSFCell, XSSFCell
Ячейки электронной таблицы используются для размещения информации. В ячейке может быть представлено числовое значение, текст или формула. Также ячейка может содержать комментарий.
Классы HSSFCell, XSSFCell включают свойства и методы работы с ячейками таблицы.
Основные методы классов HSSFCell, XSSFCell
Метод | Описание |
---|---|
getBooleanCellValue() | Чтение логического значения ячейки |
getDateCellValue() | Чтение значения ячейки типа java.util.Date |
getNumericCellValue() | Чтение числового значения ячейки типа double |
getStringCellValue() | Чтение текстового значения ячейки (java.lang.String) |
setCellValue(boolean) | Определение логического значения ячейки |
setCellValue(java.util.Calendar) | Определение значения ячейки типа даты |
setCellValue(java.util.Date) | Определение значения ячейки типа даты |
getCellTypeEnum() | Чтение типа значения ячейки CellType |
setCellComment(Comment) | Запись комментария в ячейку |
getCellComment() | Чтение комментария ячейки |
removeCellComment() | Удаление комментария ячейки |
setHyperlink(Hyperlink) | Запись гиперссылки в ячейку |
getHyperlink() | Чтение гиперссылки XSSFHyperlink в ячейке |
removeHyperlink() | Удаления гиперссылки ячейки |
getCellFormula() | Чтение формулы, например SUM(C4:E4) |
setCellFormula(String) | Определение формулы, например =SUM(C4:E4) |
getCellStyle() | Чтение стиля ячейки (XSSFCellStyle) |
setCellStyle(CellStyle) | Определение стиля ячейки |
getColumnIndex() | Определение индекса ячейки |
setAsActiveCell() | Определение активности ячейки |
С полным перечнем всех методов класса XSSFCell можно познакомиться на странице http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html
Классы стилей ячеек HSSFCellStyle, XSSFCellStyle
С полным перечнем всех свойств и методов класса XSSFCellStyle можно познакомиться на странице http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/CellStyle.html
Ниже в качестве примера представлен метод, формирующий стиль ячейки, в которой :
- текст центрируется по вертикали и горизонтали;
- обрамление ячейки представляет тонкую черную линию по периметру;
- текст переносится на следующую строку (не ячейку), если не вмещается в размер ячейки.
Метод setWrapText позволяет определить флаг переноса текста в ячейке согласно ее размеру (ширине). Чтобы перенести текст принудительно, можно в текстовой строке установить символы CRCL, например «Разделитель\r\nтекста».
Классы шрифтов HSSFFont, XSSFFont
С полным перечнем всех свойств и методов класса XSSFFont можно познакомиться на странице http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Font.html
Ниже в качестве примера представлен метод, формирующий шрифт типа «Times New Roman» :
Примеры создания файлов Excel и определение стилей ячеек рассмотрены здесь.
Reading and Writing Data to Excel File in Java using Apache POI
In Java, reading an Excel file is not similar to reading a Word file because of cells in an Excel file. JDK does not provide a direct API to read data from Excel files for which we have to toggle to a third-party library that is Apache POI. Apache POI is an open-source java library designed for reading and writing Microsoft documents in order to create and manipulate various file formats based on Microsoft Office. Using POI, one should be able to perform create, modify and display/read operations on the following file formats.
For Example, Java doesn’t provide built-in support for working with excel files, so we need to look for open-source APIs for the job. Apache POI provides Java API for manipulating various file formats based on the Office Open XML (OOXML) standard and OLE2 standard from Microsoft. Apache POI releases are available under the Apache License (V2.0).
Writing an Excel File
Earlier we introduced Apache POI- a Java API useful for interacting with Microsoft Office documents. Now we’ll see how can we read and write to an excel file using the API.
Procedure: Writing a file using POI is very simple and involve the following steps:
- Create a workbook
- Create a sheet in the workbook
- Create a row in the sheet
- Add cells in the sheet
- Repeat steps 3 and 4 to write more data.
- Close the output stream.