logo

Как да четем Excel файл в Java

В този раздел ще научим как можем да четем данни от excel файл.

В Java четенето на excel файл не е подобно на четенето на word файл поради клетките в excel файла. JDK не предоставя директен API за четене или писане на Microsoft Excel или Word документ. Трябва да разчитаме на библиотеката на трета страна, която е Apache POI.

Какво е Apache POI?

Apache POI (Poor Obfuscation Implementation) е Java API за четене и писане на документи на Microsoft и в двата формата .xls и .xlsx . Съдържа класове и интерфейси. Библиотеката на Apache POI предоставя две реализации за четене на excel файлове:

    Внедряване на HSSF (ужасен формат на електронни таблици):Той обозначава API, който работи с Excel 2003 или по-стари версии.Внедряване на XSSF (XML SpreadSheet Format):Той обозначава API, който работи с Excel 2007 или по-нови версии.

Интерфейси и класове в Apache POI

Интерфейси

    Работна книга:Представлява Работна книга на Excel . Това е интерфейс, реализиран от HSSF Работна тетрадка и XSSF Работна книга .Лист:Това е интерфейс, който представлява Работен лист на Excel . Листът е централна структура на работна книга, която представлява решетка от клетки. Интерфейсът на Sheet се разширява java.lang.Iterable .Ред:Това също е интерфейс, който представлява ред на електронната таблица. Интерфейсът Row се разширява java.lang.Iterable . Има два конкретни класа: HSSFRow и XSSFRow .клетка:Това е интерфейс. Това е представяне на високо ниво на a клетка в ред на електронната таблица. HSSFCell и XSSFCell прилагане на Cell интерфейс.

Класове

XLS класове

    HSSF Работна книга:Това е клас, представляващ XLS файла.HSSFSsheet:Това е клас, представляващ листа в XLS файл.HSSFRow:Това е клас, представляващ ред в листа на XLS файл.HSSFCell:Това е клас, представляващ клетка в ред от XLS файл.

XLSX класове

    XSSF Работна книга:Това е клас, представляващ XLSX файла.XSSFSsheet:Това е клас, представляващ листа в XLSX файл.XSSFRow:Това е клас, представляващ ред в листа на XLSX файл.XSSFCell:Това е клас, представляващ клетка в ред от XLSX файл.

Стъпки за четене на данни от XLS файл

Етап 1: Създайте прост Java проект в eclipse.

Стъпка 2: Сега създайте папка lib в проекта.

предаване на низ като int java

Стъпка 3: Изтеглете и добавете следните jar файлове в папката lib:

Стъпка 4: Задайте пътя на класа:

Щракнете с десния бутон върху проекта -> Път на изграждане -> Добавяне на външни JAR файлове -> изберете всички горепосочени jar файлове -> Прилагане и затваряне.

Стъпка 5: Сега създайте клас файл с името ReadExcelFileDemo и напишете следния код във файла.

Стъпка 6: Създайте excel файл с име 'student.xls' и запишете някои данни в него.


Как да четем Excel файл в Java

Стъпка 7: Запазете и стартирайте програмата.

Пример за четене на excel файл (.xls).

np.random.rand
 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(); } } } 

Изход:

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

Четене на XLSX файл

Всички стъпки ще останат същите, с изключение на файловия формат.

Таблица: служител.xslx


Как да четем Excel файл в Java

Пример за прочетен excel файл (.xlsx)

В този пример използваме клас XSSFWorkbook.

 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(); } } } 

Изход:

 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 

Четене на определена стойност на клетка от excel файл (.xlsx)

Таблица: EmployeeData.xlsx

css обвиващ текст

Как да четем Excel файл в Java

Пример

В следващия пример четем стойността на 2ndред и 2ndколона. Броенето на редовете и колоните започва от 0. Така че програмата връща „Софтуерен инженер“.


Как да четем Excel файл в Java

 //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 } } 

Изход:

 Software Engineer