В этой статье мы обсудим, как читать и записывать файл excel с помощью Apache POI
1. Основные определения библиотеки POI Apache
В этом разделе кратко описываются основные классы, используемые во время чтения и записи Excel.
HSSF
имеет префикс перед именем класса для обозначения операций, связанных с файлом Microsoft Excel 2003.XSSF
имеет префикс перед именем класса для обозначения операций, связанных с файлом Microsoft Excel 2007 или более поздней версии.XSSFWorkbook
иHSSFWorkbook
являются классами, которые действуют как книга ExcelHSSFSheet
иXSSFSheet
являются классами, которые действуют как рабочий лист ExcelСтрока
определяет строку ExcelЯчейка
определяет ячейку Excel, адресованную по ссылке на строку.
2. Скачать POI Apache
Библиотека POI Apache легко доступна с помощью зависимостей Maven.
org.apache.poi poi-ooxml 3.15
3. Библиотека POI Apache – Написание простого Excel
Приведенный ниже код показывает, как написать простой файл Excel с использованием библиотек POI Apache. Код использует 2-мерный массив данных для хранения данных. Данные записываются в объект XSSFWorkbook
. XSSFSheet
package com.mkyong; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class ApachePOIExcelWrite { private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx"; public static void main(String[] args) { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("Datatypes in Java"); Object[][] datatypes = { {"Datatype", "Type", "Size(in bytes)"}, {"int", "Primitive", 2}, {"float", "Primitive", 4}, {"double", "Primitive", 8}, {"char", "Primitive", 1}, {"String", "Non-Primitive", "No fixed size"} }; int rowNum = 0; System.out.println("Creating excel"); for (Object[] datatype : datatypes) { Row row = sheet.createRow(rowNum++); int colNum = 0; for (Object field : datatype) { Cell cell = row.createCell(colNum++); if (field instanceof String) { cell.setCellValue((String) field); } else if (field instanceof Integer) { cell.setCellValue((Integer) field); } } } try { FileOutputStream outputStream = new FileOutputStream(FILE_NAME); workbook.write(outputStream); workbook.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Done"); } }
При выполнении приведенного выше кода вы получите результат ниже excel в качестве вывода.
4. Библиотека POI Apache – Чтение файла Excel
Приведенный ниже код объясняет, как читать файл Excel с помощью библиотек POI Apache. Функция получить перечисление типов ячеек
устарела в версии 3.15 и будет переименована в getCellType
начиная с версии 4.0 и далее.
package com.mkyong; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; public class ApachePOIExcelRead { private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx"; public static void main(String[] args) { try { FileInputStream excelFile = new FileInputStream(new File(FILE_NAME)); Workbook workbook = new XSSFWorkbook(excelFile); Sheet datatypeSheet = workbook.getSheetAt(0); Iteratoriterator = datatypeSheet.iterator(); while (iterator.hasNext()) { Row currentRow = iterator.next(); Iterator
cellIterator = currentRow.iterator(); while (cellIterator.hasNext()) { Cell currentCell = cellIterator.next(); //getCellTypeEnum shown as deprecated for version 3.15 //getCellTypeEnum ill be renamed to getCellType starting from version 4.0 if (currentCell.getCellTypeEnum() == CellType.STRING) { System.out.print(currentCell.getStringCellValue() + "--"); } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) { System.out.print(currentCell.getNumericCellValue() + "--"); } } System.out.println(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } |
При выполнении приведенного выше кода вы получите следующий вывод.
Datatype--Type--Size(in bytes)-- int--Primitive--2.0-- float--Primitive--4.0-- double--Primitive--8.0-- char--Primitive--1.0-- String--Non-Primitive--No fixed size--
Рекомендации
- Подробная информация об устаревании getCellTypeEnum
- Ссылка на POI Apache относительно амортизации
- Апач ПОИ Мавен Апач ПОИ Мавен
- Документы API POI Apache
Оригинал: “https://mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/”