Tutoriál Apache POI
Průvodce knihovnou Apache POI
Co je to Apache POI?
Apache POI (zkratka pro Poor Obfuscation Implementation) je volně dostupná knihovna pro jazyk Java, která umožňuje zpracování dokumentů Microsoft Office. Konkrétně se jedná o:
- Soubory Excelu (.xls, .xlsx)
- Soubory Wordu (.doc, .docx)
- Soubory PowerPointu (.ppt, .pptx)
- Soubory Visia (.vsd, .vsdx)
POI poskytuje programové rozhraní pro práci se strukturou a daty těchto dokumentů. To umožňuje provádět různé operace, jako například:
- Získávání a analýza dat z tabulek a grafů
- Automatické generování dynamických dokumentů a reportů
- Automatizaci procesů zpracování dokumentů
Začínáme s Apache POI
Instalace knihovny
Apache POI lze jednoduše integrovat do vašeho projektu pomocí nástrojů pro správu závislostí, jako je Maven nebo Gradle.
Konfigurace pro Maven:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.3</version> </dependency>
Konfigurace pro Gradle:
implementation 'org.apache.poi:poi:5.2.3'
Načítání dat z Excelu
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í prvního listu (index 0)
Sheet sheet = workbook.getSheetAt(0);
// Procházení všech řádků
for (Row row : sheet) {
// Procházení všech buněk v řádku
for (Cell cell : row) {
// Získání hodnoty buňky
String value = cell.getStringCellValue();
// Výpis hodnoty
System.out.println(value);
}
}
} catch (IOException e) {
e.printStackTrace();
}
Zápis dat do Excelu
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í prvního listu (index 0)
Sheet sheet = workbook.getSheetAt(0);
// Získání prvního řádku (index 0)
Row row = sheet.getRow(0);
// Získání první buňky (index 0)
Cell cell = row.getCell(0);
// Nastavení nové hodnoty buňky
cell.setCellValue("Nová hodnota");
// Uložení změn
workbook.write(new FileOutputStream("data_updated.xlsx"));
} catch (IOException e) {
e.printStackTrace();
}
Rozšířené možnosti knihovny POI
Tvorba vlastních stylů
POI umožňuje detailní nastavení stylů pro formátování dokumentů. Například:
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í nového stylu
CellStyle style = workbook.createCellStyle();
// Nastavení písma (tučné, velikost 14)
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 (doprava)
style.setAlignment(HorizontalAlignment.RIGHT);
// Aplikace stylu na buňku
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
Knihovna POI umožňuje vytvářet a editovat grafy v Excelu:
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í prvního listu (index 0)
Sheet sheet = workbook.getSheetAt(0);
// Získání výkresu
Drawing drawing = sheet.createDrawingPatriarch();
// Vytvoření grafu (např. čá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ěrem
Apache POI je robustní nástroj pro programovou manipulaci s dokumenty Microsoft Office. S širokou škálou funkcí pro čtení, zápis a editaci dokumentů umožňuje automatizaci procesů zpracování dokumentů a integraci s jinými systémy. Vývojáři v Javě tak mají k dispozici efektivní řešení pro práci s daty a formátováním dokumentů Office, což otevírá nové možnosti v oblasti správy informací a analýzy dat.
Často kladené otázky (FAQ)
1. Jak instaluji Apache POI?
– Apache POI nainstalujete pomocí nástrojů pro správu závislostí, jako je Maven nebo Gradle.
2. Jak číst z Excelu pomocí Apache POI?
– Vytvořte instanci Workbook a pomocí getSheetAt() získejte list. Procházejte řádky a buňky pomocí Row a Cell.
3. Jak zapisovat do Excelu pomocí Apache POI?
– Získejte instanci Workbook a list. Získejte řádek a buňku a nastavte jejich hodnotu. Uložte změny pomocí write().
4. Jak vytvářet styly v Excelu pomocí Apache POI?
– Vytvořte instanci CellStyle a nastavte písmo, barvu pozadí a zarovnání. Použijte setCellStyle() na cílovou buňku.
5. Jak pracovat s grafy v Excelu pomocí Apache POI?
– Získejte list a výkres Drawing. Vytvořte graf pomocí createChart(). Nastavte data pomocí plot() a uložte změny.
6. Jak číst dokumenty Wordu pomocí Apache POI?
– Vytvořte instanci HWPFDocument nebo XWPFDocument dle verze Wordu. Využijte metody pro přístup k textu, odstavcům a dalším prvkům.
7. Jak zapisovat do dokumentů Wordu pomocí Apache POI?
– Vytvořte instanci HWPFDocument nebo XWPFDocument. Použijte metody pro přidávání a úpravy textu, odstavců a dalších prvků. Uložte pomocí write().
8. Jak pracovat s dokumenty PowerPoint pomocí Apache POI?
– Vytvořte instanci HSLFSlideShow nebo XSLFSlideShow dle verze PowerPointu. 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 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?
– Oficiální web Apache POI
– API dokumentace Apache POI
– Fórum Apache POI