Trong Java, JDK không cung cấp trực tiếp API để đọc hay ghi các file Microsoft Excel vì vậy chúng ta cần đến thư viện thứ 3 đó là Apache POI. Cùng tìm hiểu rõ hơn về Apache POI trong bài viết dưới đây nhé!
Aoache POI là gì?
Apache POI(Poor Obfuscation Implementation) là một Java API để đọc và ghi các file Microsoft Documents. Thư viện Apache POI cung cấp 2 cách triển khai để đọc và ghi file Excel:
- HSSF (Horrible SpreadSheet Format) Implementation: Sử dụng cho các file Excel 2003 hoặc những phiên bản thấp hơn.
- XSSF (XML SpreadSheet Format) Implementation: Sử dụng cho các file Excel 2007 hoặc những phiên bản cao hơn.
Các bước đọc file Excel
Bước 1: Tạo một project mới.
Bước 2: Tải các thư viện
Bước 3: Thêm các thư viện vào project: click chuột phải vào project -> ADD JAR/Folder -> Chọn các file Jar mới tải
Bước 4: Chuẩn bị File Excel
- Đây là
Bước 5: Tạo class DemoReadFileExcel
import java.io.File;
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/** * * @author ppolo */ public class DemoReadFileExcel {
} |
Bước 6: Tạo hàm readAll(File file) để thực hiện việc đọc toàn bộ dữ liệu có trong file excel,. Hàm này nhận vào file excel bạn muốn đọc.
public static void readAll(File file) {
} |
Tạo ra đối tượng FileInputStream để đọc file
FileInputStream fis = null;
try { fis = new FileInputStream(file);
}
System.out.println(“”);
}
fis.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } |
Tạo ra đối tượng XSSFWorkbook và XSSFSheet:
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);//Lấy trang đầu tiên trong file excel Iterator<Row> itr = sheet.iterator();//Lấy ra các dòng |
Do trong file excel có các dòng và các cột thứ tự các dòng. Các cột sẽ có index từ 0 và tăng 1 và các dòng cũng tương tự như vậy.
Bước 7: Để thực hiện việc đọc file, các bạn cần tạo ra một vòng lặp
//Vòng lặp đầu sẽ lấy dòng tiếp theo đến khi không còn dòng nào
while (itr.hasNext()) {//Lặp đến khi hết các dòng trong excel Row row = itr.next();//Lấy dòng tiếp theo Iterator<Cell> cellItr = row.iterator(); // Lấy ra các ô trong dòng row
//Vòng lặp này sẽ lấy ra các ô trong dòng cho đến khi không còn ô nào while (cellItr.hasNext()) { Cell cell = cellItr.next(); //Lấy ra ô(cell) tiếp theo switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: //Nếu trong ô có kiểu dữ liệu là text System.out.print(cell.getStringCellValue() + “\t\t\t”); break; case Cell.CELL_TYPE_NUMERIC: //Nếu trong ô có kiểu dữ liệu là number System.out.print(cell.getNumericCellValue() + “\t\t\t”); break; default: }
} //Xuống dòng sau các dòng System.out.println(“”);
} fis.close();//giải phóng fis |
Bước 8: Tạo hàm readByCell(File file, int vRow, int vColumn) để đọc một ô bất kỳ trong file excel. Hàm này sẽ nhận vào file excel, thứ tự dòng và thứ tự cột và tiến hành in ra màn hình.
public static void readByCell(File file, int vRow, int vColumn) {
Workbook wb = null; try {
FileInputStream fis = new FileInputStream(file);
wb = new XSSFWorkbook(fis); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } Sheet sheet = wb.getSheetAt(0); //Lấy trang đầu tiên trong file excel Row row = sheet.getRow(vRow); //Lầy dòng thứ vRow Cell cell = row.getCell(vColumn); //Lấy ô thứ vColumn trong dòng thứ vRow
System.out.println(cell.getStringCellValue());//In ra giá trị trong ô
} |
Bước 9: Tạo hàm main để tiến hành chạy chương trình
- Đọc file excel với hàm readAll()
public static void main(String[] args) {
File file = new File(“DemoExcel.xlsx”); readAll(file); } |
- Đọc file excel với hàm readByCell(), Ví dụ mình đang muốn lấy thông tin của dòng 5 cột B thì index khi nhập vào hàm readByCell(file, 4, 1)
public static void main(String[] args) {
File file = new File(“DemoExcel.xlsx”); readByCell(file, 4, 1); } |
Và đây là kết quả:
Trên đây là cách đọc file Excel bằng Apache POI. Hy vọng những thông tin trên sẽ giúp ích cho bạn trong học tập cũng như công việc!
Bộ môn Ứng dụng phần mềm
Cao đẳng FPT Mạng cá cược bóng đá
Hà Nội