Tutoriál Apache POI
Table of Contents
Co je Apache POI?
Apache POI (Poor Obfuscation Implementation) je open-source knihovna Java, která umožňuje čtení, zápis a vytváření dokumentů Microsoft Office, jako jsou:
– Excel (.xls, .xlsx)
– Word (.doc, .docx)
– PowerPoint (.ppt, .pptx)
– Visio (.vsd, .vsdx)
POI poskytuje programatický přístup ke strukturám a údajům dokumentů Office, což umožňuje provádět úlohy, jako jsou:
– Extrakce a analýza dat z tabulek a grafů
– Generování dynamických dokumentů a zpráv
– Automatizace úkolů zpracování dokumentů
První kroky s Apache POI
Instalace
Apache POI lze nainstalovat pomocí nástroje pro správu balíčků, jako je Maven nebo Gradle.
Maven:
xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
Gradle:
gradle
implementation 'org.apache.poi:poi:5.2.3'
Čtení dokumentu Excel
java
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
try (Workbook workbook = WorkbookFactory.create(new File("data.xlsx"))) {
// získání listu s indexem 0
Sheet sheet = workbook.getSheetAt(0);
// iterace přes řádky
for (Row row : sheet) {
// iterace přes buňky
for (Cell cell : row) {
// získání hodnoty buňky
String value = cell.getStringCellValue();
// vypíšeme hodnotu
System.out.println(value);
}
}
} catch (IOException e) {
e.printStackTrace();
}
Zápis do dokumentu Excel
java
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
try (Workbook workbook = WorkbookFactory.create(new File("data.xlsx"))) {
// získání listu s indexem 0
Sheet sheet = workbook.getSheetAt(0);
// získání řádku s indexem 0
Row row = sheet.getRow(0);
// získání buňky s indexem 0
Cell cell = row.getCell(0);
// nastavení hodnoty buňky
cell.setCellValue("Nová hodnota");
// uložení změn
workbook.write(new FileOutputStream("data_updated.xlsx"));
} catch (IOException e) {
e.printStackTrace();
}
Pokročilé funkce POI
Vytváření vlastních stylů
POI umožňuje vytvářet vlastní styly pro formátování dokumentů, například:
java
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
try (Workbook workbook = WorkbookFactory.create(new File("data.xlsx"))) {
// vytvoření vlastního stylu
CellStyle style = workbook.createCellStyle();
// nastavení písma
Font font = workbook.createFont();
font.setBold(true);
font.setFontSize(14);
style.setFont(font);
// nastavení barvy pozadí
style.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex());
// nastavení zarovnání textu
style.setAlignment(HorizontalAlignment.RIGHT);
// použití stylu
Sheet sheet = workbook.getSheetAt(0);
Cell cell = sheet.getRow(0).getCell(0);
cell.setCellStyle(style);
// uložení změn
workbook.write(new FileOutputStream("data_styled.xlsx"));
} catch (IOException e) {
e.printStackTrace();
}
Práce s grafy
POI umožňuje vytvářet a upravovat grafy v dokumentech Excel:
java
import org.apache.poi.ss.usermodel.Chart;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
try (Workbook workbook = WorkbookFactory.create(new File("data.xlsx"))) {
// získání listu s indexem 0
Sheet sheet = workbook.getSheetAt(0);
// získání výkresu
Drawing drawing = sheet.createDrawingPatriarch();
// vytvoření grafu typu čárový graf
Chart chart = drawing.createChart(drawing.createAnchor(0, 0, 0, 0, 0, 0, 10, 10));
// nastavení dat grafu
chart.plot(workbook, sheet);
// uložení změn
workbook.write(new FileOutputStream("data_chart.xlsx"));
} catch (IOException e) {
e.printStackTrace();
}
Závěr
Apache POI je výkonná knihovna, která poskytuje programatický přístup k dokumentům Microsoft Office. Nabízí širokou škálu funkcí pro čtení, zápis, vytváření a úpravu dokumentů, což umožňuje automatizaci úkolů zpracování dokumentů a integraci s jinými aplikacemi. S jeho pomocí mohou vývojáři Java snadno manipulovat s daty a formátováním dokumentů Office, což otevírá nové možnosti pro správu informací a analýzu dat.
Často kladené otázky (FAQ)
1. Jak nainstaluji Apache POI?
– Apache POI lze nainstalovat pomocí nástrojů pro správu balíčků, jako jsou Maven nebo Gradle.
2. Jak číst z dokumentu Excel pomocí Apache POI?
– Vytvořte instanci třídy Workbook
a pomocí metody getSheetAt()
získejte požadovaný list. Iterujte přes řádky a buňky pomocí tříd Row
a Cell
.
3. Jak zapisovat do dokumentu Excel pomocí Apache POI?
– Získejte instanci třídy Workbook
a požadovaný list. Získejte řádek a buňku a nastavte jejich hodnotu. Uložte změny pomocí metody write()
.
4. Jak vytvořit vlastní styl v dokumentu Excel pomocí Apache POI?
– Vytvořte instanci třídy CellStyle
a nastavte její písmo, barvu pozadí a zarovnání textu. Použijte metodu setCellStyle()
na cílové buňce.
5. Jak pracovat s grafy v dokumentech Excel pomocí Apache POI?
– Získejte instanci třídy Sheet
a výkresu Drawing
. Vytvořte graf požadovaného typu pomocí metody createChart()
. Nastavte data grafu pomocí metody plot()
a uložte změny.
6. Jak číst dokument Word pomocí Apache POI?
– Vytvořte instanci třídy HWPFDocument
nebo XWPFDocument
v závislosti na verzi dokumentu Word. Použijte metody třídy Document
pro přístup k textu, odstavcům a dalším prvkům.
7. Jak zapisovat do dokumentu Word pomocí Apache POI?
– Vytvořte instanci třídy HWPFDocument
nebo XWPFDocument
. Použijte metody třídy Document
pro přidávání a úpravy textu, odstavců a dalších prvků. Uložte změny pomocí metody write()
.
8. Jak pracovat s dokumenty PowerPoint pomocí Apache POI?
– Vytvořte instanci třídy HSLFSlideShow
nebo XSLFSlideShow
v závislosti na verzi dokumentu PowerPoint. Použijte metody třídy SlideShow
pro přístup k snímkům, tvarům a dalším prvkům.
9. Jak pracovat s dokumenty Visio pomocí Apache POI?
– Vytvořte instanci třídy VSDDocument
. Použijte metody třídy Document
pro přístup k shapesheetům, tvarům a dalším prvkům.
10. Kde najdu další informace o Apache POI?
– Apache POI
– Apache POI JavaDoc
– Apache POI Fórum