Jak číst / zapisovat data ze souboru Excel: Selen POI

Obsah:

Anonim

File IO je důležitou součástí každého softwarového procesu. V našich počítačích často vytváříme soubory, otevíráme je, aktualizujeme nebo mazáme. Totéž platí pro selenovou automatizaci. Potřebujeme postup pro manipulaci se soubory se selenem.

Java nám poskytuje různé třídy pro manipulaci se soubory se selenem. V tomto tutoriálu se naučíme, jak můžeme číst a psát na soubor Excel pomocí balíčku Java IO a knihovny Apache POI.

Apache POI v selenu

Apache POI v Selen je široce používaný API pro selen dat řízené testování. Jedná se o knihovnu POI napsanou v Javě, která uživatelům poskytuje rozhraní API pro manipulaci s dokumenty Microsoft, jako jsou .xls a .xlsx. Uživatelé mohou snadno vytvářet, upravovat a číst / zapisovat do souborů aplikace Excel. POI je zkratka pro „Špatná implementace obfuskace“.

  • Jak zpracovat soubor aplikace Excel pomocí POI (závislost Maven POM)
  • Třídy a rozhraní v POI
  • Operace čtení / zápisu
  • Čtení dat ze souboru aplikace Excel
  • Zápis dat do souboru Excel
  • Manipulace s Excelem pomocí JXL API

Export aplikace Excel

Jak zpracovat soubor aplikace Excel pomocí POI (závislost Maven POM)

Chcete-li číst a psát soubory Excel v Javě, poskytuje Apache velmi slavnou knihovnu POI. Tato knihovna je dostatečně schopná číst a zapisovat do formátu XLS i XLSX v Excelu.

Ke čtení souborů XLS poskytuje implementaci HSSF knihovna POI.

Pro čtení XLSX bude volbou implementace knihovny POI XSSF . Pojďme si tyto implementace podrobně prostudovat.

Pokud ve svém projektu používáte Maven, bude závislost Maven

 org.apache.poi  poi  4.1.1 

Nebo si můžete jednoduše stáhnout nejnovější verzi sklenic POI z http://poi.apache.org/download.html a stáhnout nejnovější soubor zip

Když si stáhnete soubor zip pro tuto sklenici, musíte ji rozbalit a přidat všechny tyto sklenice do cesty ke třídě svého projektu.

Třídy a rozhraní v POI:

Třídy a rozhraní v Apache POI

Následuje seznam různých rozhraní Java a tříd v POI pro čtení souborů XLS a XLSX -

  • Sešit : Třídy XSSFWorkbook a HSSFWorkbook implementují toto rozhraní.
  • XSSFWorkbook : Je třídní reprezentace souboru XLSX.
  • HSSFWorkbook : Je třídní reprezentace souboru XLS.
  • List : Třídy XSSFSheet a HSSFSheet implementují toto rozhraní.
  • XSSFSheet : Je třída představující list v souboru XLSX.
  • HSSFSheet : Je třída představující list v souboru XLS.
  • Řádek : Třídy XSSFRow a HSSFRow implementují toto rozhraní.
  • XSSFRow : Je třída představující řádek v listu souboru XLSX.
  • HSSFRow : Je třída představující řádek v listu souboru XLS.
  • Buňka : Toto rozhraní implementují třídy XSSFCell a HSSFCell.
  • XSSFCell : Je třída představující buňku v řadě souboru XLSX.
  • HSSFCell: Je třída představující buňku v řadě souboru XLS.

Operace čtení / zápisu

Pro náš příklad zvážíme níže uvedený formát souboru Excel

Čtení dat ze souboru aplikace Excel

Úplný příklad: Zde se snažíme číst data z Excelu v selenu:

balíček excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importovat org.apache.poi.ss.usermodel.Row;importovat org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;veřejná třída ReadGuru99ExcelFile {public void readExcel (String filePath, String fileName, String sheetName) vyvolá IOException {// Vytvořte objekt třídy File a otevřete soubor xlsxSoubor file = new File (filePath + "\\" + fileName);// Vytvoří objekt třídy FileInputStream pro čtení souboru aplikace ExcelFileInputStream inputStream = nový FileInputStream (soubor);Workbook guru99Workbook = null;// Najděte příponu souboru rozdělením názvu souboru do podřetězce a získáním pouze názvu příponyŘetězec fileExtensionName = fileName.substring (fileName.indexOf ("."));// Zkontrolujte podmínku, zda se jedná o soubor xlsxif (fileExtensionName.equals (". xlsx")) {// Pokud se jedná o soubor xlsx, vytvořte objekt třídy XSSFWorkbookguru99Workbook = nový XSSFWorkbook (inputStream);}// Zkontrolujte stav, zda je soubor xlselse if (fileExtensionName.equals (". xls")) {// Pokud je to soubor xls, vytvořte objekt třídy HSSFWorkbookguru99Workbook = nový HSSFWorkbook (inputStream);}// Číst list uvnitř sešitu podle jeho názvuList guru99Sheet = guru99Workbook.getSheet (název listu);// Najít počet řádků v souboru aplikace Excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Vytvořte smyčku přes všechny řádky souboru aplikace Excel a přečtěte si jejfor (int i = 0; i 

Poznámka: Zde nepoužíváme rámec Testng. Spusťte třídu jako Java Application pomocí funkce read excel v selenu, jak je ukázáno ve výše uvedeném příkladu.

Zápis dat do souboru Excel

Úplný příklad: Zde se pokoušíme zapisovat data ze souboru aplikace Excel přidáním nového řádku do souboru aplikace Excel

balíček excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importovat org.apache.poi.ss.usermodel.Cell;importovat org.apache.poi.ss.usermodel.Row;importovat org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;veřejná třída WriteGuru99ExcelFile {public void writeExcel (String filePath, String fileName, String sheetName, String [] dataToWrite) vyvolá IOException {// Vytvořte objekt třídy File a otevřete soubor xlsxSoubor file = new File (filePath + "\\" + fileName);// Vytvoří objekt třídy FileInputStream pro čtení souboru aplikace ExcelFileInputStream inputStream = nový FileInputStream (soubor);Workbook guru99Workbook = null;// Najděte příponu souboru rozdělením názvu souboru do podřetězce a získáním pouze názvu příponyŘetězec fileExtensionName = fileName.substring (fileName.indexOf ("."));// Zkontrolujte podmínku, zda se jedná o soubor xlsxif (fileExtensionName.equals (". xlsx")) {// Pokud se jedná o soubor xlsx, vytvořte objekt třídy XSSFWorkbookguru99Workbook = nový XSSFWorkbook (inputStream);}// Zkontrolujte stav, zda je soubor xlselse if (fileExtensionName.equals (". xls")) {// Pokud je to soubor xls, vytvořte objekt třídy XSSFWorkbookguru99Workbook = nový HSSFWorkbook (inputStream);}// Přečíst list aplikace Excel podle názvu listuListový list = guru99Workbook.getSheet (název listu);// Získejte aktuální počet řádků v souboru aplikace Excelint rowCount = sheet.getLastRowNum () - sheet.getFirstRowNum ();// Získejte první řádek z listuŘádek řádek = sheet.getRow (0);// Vytvořte nový řádek a připojte jej na konec listuŘádek newRow = sheet.createRow (rowCount + 1);// Vytvořte smyčku přes buňku nově vytvořeného řádkufor (int j = 0; j 

Manipulace s Excelem pomocí JXL API

JXL je také další slavný nástroj pro čtení souborů Excel v Javě a psaní souborů. V dnešní době se POI používá ve většině projektů, ale před POI bylo JXL pouze Java API pro manipulaci s Excelem. Jedná se o velmi malé a jednoduché API pro čtení Excel v selenu.

TIPY: Můj návrh je nepoužívat JXL v žádném novém projektu, protože knihovna není v aktivním vývoji od roku 2010 a nedostatek funkce ve srovnání s POI API.

Stáhnout JXL:

Pokud chcete pracovat s JXL, můžete si jej stáhnout z tohoto odkazu

https://sourceforge.net/projects/jexcelapi/files/jexcelapi/2.6.12/

Můžete také získat ukázkový příklad uvnitř tohoto komprimovaného souboru pro JXL.

Některé z funkcí:

  • JXL je schopen číst soubor aplikace Excel v selenu pro sešit 95, 97, 2000, XP, 2003.
  • Můžeme pracovat s angličtinou, francouzštinou, španělštinou, němčinou.
  • Kopírování grafu a vkládání obrázků v aplikaci Excel je možné

Nevýhoda:

  • Můžeme psát pouze Excel 97 a novější (psaní v Excel 95 není podporováno).
  • JXL nepodporuje formát XLSX souboru aplikace Excel.
  • Generuje tabulku ve formátu Excel 2000.

Souhrn:

  • Soubor Excel lze číst operací Java IO. K tomu musíme použít Apache POI Jar .
  • V souboru Excel existují dva druhy sešitu, soubory XLSX a XLS .
  • BZ má různé pracovní sešity, listy, řádky, buňky.
  • Tato rozhraní jsou implementována odpovídajícími třídami manipulace se soubory XLS ( HSSFWorkbook, HSSFSheet, HSSFRow, HSSFCell ) a XLSX ( XSSFWorkbook, XSSFSheet, XSSFRow, XSSFCell ).
  • JXL je další API pro zpracování Excel v selenu.
  • JXL nemůže pracovat s formátem XLSX aplikace Excel.