Tutoriál Apache POI

Tutoriál Apache POI

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

  Jak pracovat s trendovými liniemi v grafech aplikace Microsoft Excel