Chúng tôi có thể đọc tệp Excel bằng Java mà không cần Apache POI không?

Trước mình đã nói về cách kiểm tra PageRank trong Java. Trong bài này mình sẽ kết hợp PageRank với file Excel. Để vận hành các tệp Excel trong Java, tôi đã sử dụng Apache POI - API Java cho Tài liệu của Microsoft. Rõ ràng, bạn có thể tải xuống gói API và làm theo hướng dẫn có liên quan để tìm hiểu cách sử dụng POI. Khi tôi lần đầu tiên tải xuống thư viện Java, tôi đã rất ngạc nhiên về số lượng tệp jar trong đó. Tôi không biết cái nào sẽ hữu ích cho dự án của mình. May mắn thay, tôi đã cố gắng lọc ra những gì tôi muốn

Bạn có thể tiết kiệm thời gian của mình để tải các thư viện như sau

  • poi-3. 10-CUỐI-20140208. cái lọ
  • poi-ooxml-3. 10-CUỐI-20140208. cái lọ
  • poi-ooxml-schemas-3. 10-CUỐI-20140208. cái lọ
  • dom4j-1. 6. 1. cái lọ
  • xmlbeans-2. 3. 0. cái lọ

Cấu hình dự án của tôi được hiển thị trong hình 1

Hình 1

Trong mã nguồn sau, tôi mã hóa cứng dữ liệu đầu vào trong cột đầu tiên và dữ liệu đầu ra trong cột thứ hai

Hay quá, đây là các bước để đọc dữ liệu từ file Excel trong Java, nhưng bạn quên mất một điều là bạn cần tìm loại ô trước khi lấy giá trị ô, nếu không bạn sẽ bị báo lỗi khi đọc ô đó. Đọc giá trị ngày thậm chí còn phức tạp hơn. Bạn ngạc nhiên là không có loại ô ngày trong Excel [cả XLS và XLSX],  thay vào đó Excel lưu trữ ngày ở dạng số.  


Vì vậy, bạn cần so sánh loại ô với HSSFCell. CELL_TYPE_NUMERIC  nếu bạn đang đọc tệp XLS và XSSFCell. CELL_TYPE_NUMERIC nếu bạn đang đọc tệp XLSX, nhưng câu chuyện vẫn chưa kết thúc ở đây, nếu bạn chỉ in giá trị ô bằng cách sử dụng getNumericCellValue[], you will not get any error but you will see an arbitrary number. 


Để in giá trị ngày thực tế, bạn cần sử dụng phương thức getDateCellValue[] , phương thức này sẽ trả về một đối tượng của java.util.Date , nếu bạn muốn hiển thị ngày đã định dạng, thì bạn cần định dạng ngày bằng cách sử dụng SimpleDateFormat hoặc bằng cách sử dụng thư viện Ngày và Giờ của Joda.

Trong ví dụ của chúng tôi, chúng tôi sẽ tạo một tệp excel chứa một hàng và hai cột. Cột đầu tiên sẽ chứa kiểu Chuỗi, nơi chúng tôi sẽ lưu tên và cột thứ hai sẽ chứa kiểu ngày, nơi chúng tôi sẽ lưu ngày sinh. Sau đó, chúng ta sẽ đọc cùng một tệp excel trong chương trình Java của mình để hiển thị các giá trị tên và ngày vào bảng điều khiển.


Để đọc một tệp excel trong Java, tệp đó phải nằm trong đường dẫn lớp. Để tránh các sự cố, tôi sẽ sử dụng Eclipse IDE để viết chương trình này và nó sẽ tạo trực tiếp một tệp excel trong dự án của Eclipse, tệp này luôn nằm trong đường dẫn lớp.


Cách đọc/ghi từ tệp XLS trong Java

Đây là ví dụ đầu tiên của chúng tôi để đọc các giá trị Chuỗi và ngày từ các tệp Excel trong Java. Trong ví dụ này, trước tiên chúng tôi tạo định dạng tệp Excel cũ i. e. Tệp XLS sinh nhật. xls và sau này chúng ta sẽ đọc từ cùng một tệp. Khi chúng tôi chạy chương trình của mình, bạn có thể thấy tệp excel này được tạo trong thư mục dự án Eclipse của bạn, như được hiển thị bên dưới.




Các bước ghi Data vào file XLS trong Java

  • Bao gồm poi-3. 12. jar trong đường dẫn lớp chương trình Java của bạn
  • Tạo đối tượng của HSSFWorkBook
  • Tạo Trang tính trên sổ làm việc đó bằng cách gọi phương thức createSheet[]  
  • Tạo một Hàng trên trang tính đó bằng cách gọi phương thức createRow[]
  • Tạo ô bằng cách gọi phương thức createCell[] method
  • Đặt giá trị cho ô đó bằng cách gọi phương thức setCellValue[] .
  • Ghi nội dung sổ làm việc vào Tệp bằng cách sử dụng đối tượng FileOutputStream .
  • Đóng đối tượng sổ làm việc bằng cách gọi phương thức close[] method

Các bước này phù hợp để ghi các giá trị Chuỗi và Số nhưng để ghi các giá trị ngày tháng vào tệp Excel, bạn cần làm theo các bước sau.

  • Tạo Định dạng dữ liệu
  • Tạo một CellStyle
  • Đặt định dạng thành CellStyle
  • Đặt CellStyle thành Cell
  • viết java. sử dụng. Ngày vào ô


Bước đọc dữ liệu từ file XLS trong Java

  • Bao gồm poi-3. 12. jar trong đường dẫn lớp chương trình Java của bạn
  • Tạo đối tượng của HSSFWorkBook bằng cách mở tệp excel bằng FileInputStream
  • Lấy Trang tính từ sổ làm việc bằng cách gọi phương thức getSheet[] , bạn có thể chuyển tên hoặc chỉ mục trang tính
  • Nhận một Hàng từ trang tính đó bằng cách gọi phương thức getRow[] , bạn có thể chuyển chỉ mục
  • Lấy một ô bằng cách gọi phương thức getCell[] method
  • Lấy loại Ô bằng cách gọi phương thức getCellType[] .
  • Tùy thuộc vào loại Ô, hãy gọi getStringCellValue[] , getNumericCellValue[] or getDateCellValue[] method to get value.
  • Đóng đối tượng sổ làm việc bằng cách gọi phương thức close[] method
Nếu bạn đang đọc các giá trị ngày thì chỉ cần nhớ một điều nữa là không có ô nào có kiểu ngày và Excel lưu ngày ở dạng số. Vì vậy, hãy luôn so sánh loại ô có giá trị ngày với loại ô số.

Trong chương trình này, logic đọc và viết được gói gọn trong hai phương thức tiện ích tĩnh readFromExcel[]writeIntoExcel[], so you can also take a look at them for exact code for reading writing XLS file in Java.

______0
Trong chương trình của chúng tôi, trước tiên chúng tôi tạo một tệp excel với các cột Chuỗi và ngày, sau đó đọc từ cùng một tệp và hiển thị các giá trị trong bảng điều khiển. Bây giờ hãy xác minh đầu ra của chương trình này. Nó hiển thị chính xác giá trị ngày, mặc dù không được định dạng, điều đó có nghĩa là tệp excel đã được tạo thành công và sau này Java có thể đọc được từ đó.


Nếu bạn nhìn vào thư mục dự án Eclipse của mình, bạn sẽ thấy ngày sinh nhật. xls được tạo ở đó, nếu bạn mở tệp đó bằng Microsoft Excel hoặc bất kỳ trình soạn thảo Open Office nào, bạn sẽ thấy đầu ra sau.



Điều này là do tôi chưa bao gồm  trang tính. autoSizeColumn[1] gọi phương thức trong lần chạy đầu tiên và vì độ rộng của cột không đủ để hiển thị ngày ở định dạng được yêu cầu e. g. đ. mm. yyyy nó chỉ hiển thị ######.


Để giải quyết vấn đề ngày không hiển thị chính xác này, tất cả những gì bạn cần làm là bật tính năng tự động định cỡ cột trong Excel bằng cách gọi  sheet. autoSizeColumn[1] , trong đó chỉ mục cột là cột bạn muốn tự động thay đổi kích thước.


Nếu bạn chạy lại chương trình với mã đó, bạn có thể thấy các giá trị ngày được định dạng và khớp đúng trong cột được yêu cầu, như được hiển thị bên dưới



Ví dụ về Apache POI để đọc tệp XLSX trong Java

Đọc và ghi sang định dạng tệp excel mới XLSX cũng giống như vậy, bạn chỉ cần thêm poi-ooxml. jar và thay thế tất cả các lớp HSFF bằng các lớp XSSF e. g. thay vì sử dụng HSSFWorkbook , hãy sử dụng XSSF Workbook , thay vì sử dụng HSFFSheet use XSSFSheet, instead of using HSSFRow use XSSFRow and instead of using HSSFCell just use XSSFCell class. 


Phần còn lại của mã và các bước sẽ giống nhau. Trong chương trình Java sau đây, tôi sẽ hướng dẫn các bạn cách đọc tệp XLSX trong Java. Trong chương trình này, trước tiên, chúng tôi tạo một tệp excel và ghi các giá trị chuỗi và ngày vào đó, sau đó đọc từ cùng một tệp excel và hiển thị dữ liệu vào bảng điều khiển, chỉ khác ở lần này là thay vì tạo tệp XLS, chương trình của chúng tôi sẽ .  

Làm cách nào để đọc dữ liệu từ tệp Excel trong Java?

Ví dụ đọc file excel [. xls] .
nhập java. io. Tập tin;
nhập java. io. FileInputStream;
nhập java. io. IOException;
tổ chức nhập khẩu. apache. poi. hssf. mô hình người dùng. Bảng HSSF;
tổ chức nhập khẩu. apache. poi. hssf. mô hình người dùng. Sổ tay HSSF;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Tế bào;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Trình đánh giá công thức;

Java có thể tương tác với Excel không?

Để thực hiện các thao tác với tệp, Java sử dụng lớp luồng. Để thực hiện các thao tác trong trang tính excel bằng JAVA, sẽ rất hữu ích khi sử dụng tệp CSV vì tệp CSV có thể dễ dàng được sử dụng với Microsoft Excel, bảng tính Google và hầu hết tất cả các bảng tính khác có sẵn. Để tự ghi dữ liệu vào bảng excel bằng poi. 1

Làm cách nào để đọc tệp Excel động trong Java?

Đọc tệp Excel bằng Java .
Nhận tham chiếu của trang tính trong một đối tượng Worksheet
Lấy số lượng hàng và cột dữ liệu trong trang tính
Bắt đầu một vòng lặp cho các hàng
Bắt đầu một vòng lặp lồng nhau cho các cột
Đọc dữ liệu từ mỗi ô bằng Worksheet. getCell[]. lấy [hàng Index, cột Index]. phương thức getValue[]

Làm cách nào để đọc tiêu đề của tệp Excel trong Java?

Ví dụ về tiêu đề Apache POI Excel .
gói poiexample;
nhập java. io. FileOutputStream;
nhập java. io. Dòng đầu ra;
tổ chức nhập khẩu. apache. poi. hssf. mô hình người dùng. Sổ tay HSSF;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Tế bào;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Tiêu đề;
tổ chức nhập khẩu. apache. poi. ss. mô hình người dùng. Hàng ngang;

Chủ Đề