Афоризм
— Почему Вы не сделаете пластическую операцию?
— А толку! Фасад обновишь, а канализация все равно старая!
Фаина Раневская
Последние статьи

 • Активности Android
Многоэкранные Android приложения
 • Fragment dynamic
Динамическая загрузка фрагментов в Android
 • Fragment lifecycle
Жизненный цикл Fragment'ов в Android
 • Fragment example
Пример Fragment'ов в Android
 • Data Binding
Описание и пример Data Binding
 • Пример MVVM
Пример использования MVVM в Android
 • Компонент TreeTable
Описание компонента TreeTable для Swing
 • Пример TreeTable
Пример использования TreeTable
 • Хранилища Android
Внутренние и внешние хранилища данных
 • Пример SQLite
Пример использования SQLite в Android
 • WebSocket
Описание и пример реализации WebSocket
 • Визуальные компоненты
Улучшен компонент выбора даты из календаря
 • Анимация jQuery
Описание и примеры анимации элементов DOM
 • APK-файл Android
Создание apk-файла для android устройств, .dex файлы
 • платформа JaBricks
Платформа OSGi-приложения JaBricks
Поддержка проекта

Если Вам сайт понравился и помог, то будем признательны за Ваш «посильный» вклад в его поддержку и развитие
 • Yandex.Деньги
  410013796724260

 • Webmoney
  R335386147728
  Z369087728698

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
XSSFXML Spreadsheet Format Компонент чтения и записи файлов MS-Excel, формат XLSX
HPSFHorrible Property Set Format Компонент получения наборов свойств файлов MS-Office
HWPFHorrible Word Processor FormatКомпонент чтения и записи файлов MS-Word, формат DOC
XWPFXML Word Processor Format Компонент чтения и записи файлов MS-Word, формат DOCX
HSLFHorrible Slide Layout Format Компонент чтения и записи файлов PowerPoint, формат PPT
XSLFXML Slide Layout Format Компонент чтения и записи файлов PowerPoint, формат PPTX
HDGFHorrible DiaGram Format Компонент работы с файлами MS-Visio, формат VSD
XDGFXML 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, то необходимо установить одну из следующих зависимостей (версия может быть более новой) :

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.16</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.16</version>
</dependency>

На странице описания примера чтения файлов Excel приведен проект, включающий необходимый набор файлов библиотеки Apache POI (poi-3.16.jar, poi-ooxml-3.16.jar, poi-ooxml-schemas-3.16.jar) и сопутствующих библиотек.

На странице рассматриваются следующие классы, используемые для работы с файлами Excel из приложений Java.

Поскольку описание всех классов и методов не разместить на одной странице, то ниже по тексту приводятся ссылки для перехода к исходной документации.

Классы и методы 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

HSSFWorkbook ();
HSSFWorkbook (InternalWorkbook book);
HSSFWorkbook (POIFSFileSystem  fs);
HSSFWorkbook (NPOIFSFileSystem fs);
HSSFWorkbook (POIFSFileSystem  fs, 
              boolean preserveNodes);
HSSFWorkbook (DirectoryNode directory, 
              POIFSFileSystem fs, 
              boolean preserveNodes);
HSSFWorkbook (DirectoryNode directory,
              boolean preserveNodes);
HSSFWorkbook (InputStream s);
HSSFWorkbook (InputStream s, 
              boolean preserveNodes);

preservenodes является необязательным параметром, который определяет необходимость сохранения узлов типа макросы.

Конструкторы класса XSSFWorkbook

XSSFWorkbook ();
// workbookType  создать .xlsx или .xlsm
XSSFWorkbook (XSSFWorkbookType workbookType);
XSSFWorkbook (OPCPackage   pkg );
XSSFWorkbook (InputStream  is  );
XSSFWorkbook (File         file);
XSSFWorkbook (String       path);

Основные методы 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 включают свойства и методы работы с ячейками таблицы.

  • org.apache.poi.hssf.usermodel.HSSFCell
  • org.apache.poi.xssf.usermodel.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

Ниже в качестве примера представлен метод, формирующий стиль ячейки, в которой :

  • текст центрируется по вертикали и горизонтали;
  • обрамление ячейки представляет тонкую черную линию по периметру;
  • текст переносится на следующую строку (не ячейку), если не вмещается в размер ячейки.
private XSSFCellStyle createCellStyle(XSSFWorkbook book)
{
    BorderStyle thin  = BorderStyle.THIN;
    short       black = IndexedColors.BLACK.getIndex();

    XSSFCellStyle style = book.createCellStyle();

    style.setWrapText(true);
    style.setAlignment        (HorizontalAlignment.CENTER);
    style.setVerticalAlignment(VerticalAlignment  .CENTER);

    style.setBorderTop        (thin);
    style.setBorderBottom     (thin);
    style.setBorderRight      (thin);
    style.setBorderLeft       (thin);

    style.setTopBorderColor   (black);
    style.setRightBorderColor (black);
    style.setBottomBorderColor(black);
    style.setLeftBorderColor  (black);

    return style;
}

Метод setWrapText позволяет определить флаг переноса текста в ячейке согласно ее размеру (ширине). Чтобы перенести текст принудительно, можно в текстовой строке установить символы CRCL, например "Разделитель\r\nтекста".

Классы шрифтов HSSFFont, XSSFFont

С полным перечнем всех свойств и методов класса XSSFFont можно познакомиться на странице http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Font.html

Ниже в качестве примера представлен метод, формирующий шрифт типа "Times New Roman" :

private XSSFFont createCellFont(XSSFWorkbook book)
{
    XSSFFont font = workBook.createFont();
    font.setFontHeightInPoints((short) 12);
    font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
    font.setFontName("Times New Roman");
           
    return(font);
}
. . .
HSSFCellStyle style = book.createCellStyle();
style.setFont(createCellFont(book));

Примеры создания файлов Excel и определение стилей ячеек рассмотрены здесь.

  Рейтинг@Mail.ru