logo

Kuinka lukea Excel-tiedostoa Javassa

Tässä osiossa opimme kuinka voimme lukea tietoja Excel-tiedostosta.

taskulampun asennus

Javassa excel-tiedoston lukeminen ei ole samanlaista kuin Word-tiedoston lukeminen Excel-tiedoston solujen vuoksi. JDK ei tarjoa suoraa API:ta Microsoft Excel- tai Word-asiakirjojen lukemiseen tai kirjoittamiseen. Meidän on luotettava kolmannen osapuolen kirjastoon, joka on Apache POI.

Mikä on Apache POI?

Apache POI (Poor Obfuscation Implementation) on Java-sovellusliittymä Microsoft-dokumenttien lukemiseen ja kirjoittamiseen molemmissa muodoissa .xls ja .xlsx . Se sisältää luokkia ja käyttöliittymiä. Apache POI -kirjasto tarjoaa kaksi toteutusta Excel-tiedostojen lukemiseen:

    HSSF (Horrible SpreadSheet Format) -toteutus:Se tarkoittaa sovellusliittymää, joka toimii Excel 2003:n tai aiempien versioiden kanssa.XSSF (XML SpreadSheet Format) -toteutus:Se tarkoittaa sovellusliittymää, joka toimii Excel 2007:n tai uudempien versioiden kanssa.

Liitännät ja luokat Apache POI:ssa

Liitännät

    Työkirja:Se edustaa an Excel-työkirja . Se on käyttöliittymä toteuttaa HSSF-työkirja ja XSSF-työkirja .Arkki:Se on käyttöliittymä, joka edustaa Excel-laskentataulukko . Arkki on työkirjan keskeinen rakenne, joka edustaa solujen ruudukkoa. Sheet-käyttöliittymä laajenee java.lang.Iterable .Rivi:Se on myös käyttöliittymä, joka edustaa rivi laskentataulukosta. Row-käyttöliittymä laajenee java.lang.Iterable . On olemassa kaksi konkreettista luokkaa: HSSFRrow ja XSSFRrow .Solu:Se on käyttöliittymä. Se on korkean tason esitys a solu laskentataulukon rivillä. HSSFCell ja XSSFCell toteuttaa solun käyttöliittymä.

Luokat

XLS luokat

    HSSF-työkirja:Se on XLS-tiedostoa edustava luokka.HSSFS-taulukko:Se on luokka, joka edustaa arkkia XLS-tiedostossa.HSSFRrow:Se on luokka, joka edustaa XLS-tiedoston riviä.HSSFCell:Se on luokka, joka edustaa XLS-tiedoston rivin solua.

XLSX-luokat

    XSSF-työkirja:Se on luokka, joka edustaa XLSX-tiedostoa.XSSFS-taulukko:Se on luokka, joka edustaa arkkia XLSX-tiedostossa.XSSFRrow:Se on luokka, joka edustaa riviä XLSX-tiedoston arkissa.XSSFCell:Se on luokka, joka edustaa solua XLSX-tiedoston rivillä.

Vaiheet tietojen lukemiseen XLS-tiedostosta

Vaihe 1: Luo yksinkertainen Java-projekti eclipsessä.

Vaihe 2: Luo nyt projektiin lib-kansio.

Vaihe 3: Lataa ja lisää seuraavat jar-tiedostot lib-kansioon:

Vaihe 4: Aseta luokan polku:

Napsauta projektia hiiren kakkospainikkeella -> Build Path -> Add External JARs -> valitse kaikki yllä olevat jar-tiedostot -> Käytä ja sulje.

Vaihe 5: Luo nyt luokkatiedosto nimellä Lue ExcelFileDemo ja kirjoita tiedostoon seuraava koodi.

Vaihe 6: Luo excel-tiedosto nimellä 'student.xls' ja kirjoita siihen tietoja.

foreach konekirjoitus

Kuinka lukea Excel-tiedostoa Javassa

Vaihe 7: Tallenna ja suorita ohjelma.

Esimerkki excel-tiedoston (.xls) lukemisesta

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; public class ReadExcelFileDemo { public static void main(String args[]) throws IOException { //obtaining input bytes from a file FileInputStream fis=new FileInputStream(new File('C:\demo\student.xls')); //creating workbook instance that refers to .xls file HSSFWorkbook wb=new HSSFWorkbook(fis); //creating a Sheet object to retrieve the object HSSFSheet sheet=wb.getSheetAt(0); //evaluating cell type FormulaEvaluator formulaEvaluator=wb.getCreationHelper().createFormulaEvaluator(); for(Row row: sheet) //iteration over row using for each loop { for(Cell cell: row) //iteration over cell using for each loop { switch(formulaEvaluator.evaluateInCell(cell).getCellType()) { case Cell.CELL_TYPE_NUMERIC: //field that represents numeric cell type //getting the value of the cell as a number System.out.print(cell.getNumericCellValue()+ '		'); break; case Cell.CELL_TYPE_STRING: //field that represents string cell type //getting the value of the cell as a string System.out.print(cell.getStringCellValue()+ '		'); break; } } System.out.println(); } } } 

Lähtö:

 Name Age Height Swarit 23.0 5' Puneet 25.0 6'1' Swastik 22.0 5'5' Tejas 12.0 4'9' 

XLSX-tiedoston lukeminen

Kaikki vaiheet pysyvät samoina paitsi tiedostomuoto.

Pöytä: työntekijä.xslx

näyttelijä zeenat aman

Kuinka lukea Excel-tiedostoa Javassa

Esimerkki excel-tiedoston lukemisesta (.xlsx)

Tässä esimerkissä käytämme XSSFWorkbook-luokkaa.

c#
 import java.io.File; import java.io.FileInputStream; import java.util.Iterator; 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; public class XLSXReaderExample { public static void main(String[] args) { try { File file = new File('C:\demo\employee.xlsx'); //creating a new file instance FileInputStream fis = new FileInputStream(file); //obtaining bytes from the file //creating Workbook instance that refers to .xlsx file XSSFWorkbook wb = new XSSFWorkbook(fis); XSSFSheet sheet = wb.getSheetAt(0); //creating a Sheet object to retrieve object Iterator itr = sheet.iterator(); //iterating over excel file while (itr.hasNext()) { Row row = itr.next(); Iterator cellIterator = row.cellIterator(); //iterating over each column while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: //field that represents string cell type System.out.print(cell.getStringCellValue() + '			'); break; case Cell.CELL_TYPE_NUMERIC: //field that represents number cell type System.out.print(cell.getNumericCellValue() + '			'); break; default: } } System.out.println(''); } } catch(Exception e) { e.printStackTrace(); } } } 

Lähtö:

 Employee ID Employee Name Salary Designation Department 1223.0 Harsh 20000.0 Marketing Manager Marketing 3213.0 Vivek 15000.0 Financial Advisor Finance 6542.0 Krishna 21000.0 HR Manager HR 9213.0 Sarika 34000.0 Sales Manager Sales 

Tietyn solun arvon lukeminen excel-tiedostosta (.xlsx)

Pöytä: EmployeeData.xlsx


Kuinka lukea Excel-tiedostoa Javassa

Esimerkki

Seuraavassa esimerkissä luemme 2:n arvonndrivi ja 2ndsarakkeessa. Rivien ja sarakkeiden laskenta alkaa nollasta. Joten ohjelma palauttaa 'Software Engineer'.


Kuinka lukea Excel-tiedostoa Javassa

 //reading value of a particular cell import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadCellExample { public static void main(String[] args) { ReadCellExample rc=new ReadCellExample(); //object of the class //reading the value of 2nd row and 2nd column String vOutput=rc.ReadCellData(2, 2); System.out.println(vOutput); } //method defined for reading a cell public String ReadCellData(int vRow, int vColumn) { String value=null; //variable for storing the cell value Workbook wb=null; //initialize Workbook null try { //reading data from a file in the form of bytes FileInputStream fis=new FileInputStream('C:\demo\EmployeeData.xlsx'); //constructs an XSSFWorkbook object, by buffering the whole stream into the memory wb=new XSSFWorkbook(fis); } catch(FileNotFoundException e) { e.printStackTrace(); } catch(IOException e1) { e1.printStackTrace(); } Sheet sheet=wb.getSheetAt(0); //getting the XSSFSheet object at given index Row row=sheet.getRow(vRow); //returns the logical row Cell cell=row.getCell(vColumn); //getting the cell representing the given column value=cell.getStringCellValue(); //getting cell value return value; //returns the cell value } } 

Lähtö:

 Software Engineer