Top 8 # Xem Nhiều Nhất Xuất Dữ Liệu Ra File Excel Trong Java Mới Nhất 3/2023 # Top Like | Beiqthatgioi.com

Java: Cách Tạo Và Chèn Dữ Liệu Vào File Excel

Trong Java, việc đọc tệp excel và ghi tệp excel có một chút khó khăn vì trang tính Excel có các ô để lưu trữ dữ liệu. Java không cung cấp API trực tiếp để đọc hoặc viết các tài liệu Microsoft Excel hoặc Word. Ta sẽ phải dựa vào thư viện của bên thứ ba là Apache POI. Trong phần này, chúng ta sẽ học cách tạo một tệp excel bằng Java và cách ghi hoặc chèn dữ liệu vào tệp excel bằng thư viện Apache POI Java.

1. Thư viện POI Java Apache

Apache POI (Thực hiện giải mã kém) là một API Java để đọc và ghi Tài liệu Microsoft. Nó chứa các lớp và giao diện. Thư viện Apache POI cung cấp hai cách triển khai để đọc hoặc ghi tệp excel:

Triển khai HSSF (Horrible SpreadSheet Format): Nó biểu thị một API đang hoạt động với Excel 2003 hoặc các phiên bản cũ hơn.

Triển khai XSSF (XML SpreadSheet Format): Nó biểu thị một API đang hoạt động với phiên bản Excel 2007 trở lên.

Trong phần này sẽ sẽ sử dụng triển khai HSSF.

2. Tạo file Excel trong Java

Bước 1: Tạo một dự án Java với tên CreateExcelFile từ IntelliJ.

Bước 2: Tạo một lớp tên CreateExcelFileExample1.

Bước 2: Tải xuống thư viện Apache POI ( poi-3.17.jar).

Bước 5: Nhấp chọn Libraries sau đó nhấn dấu + và chọn Java như hình dưới:

Bước 6: Tìm đến nơi chứa file chúng tôi rồi chọn và nhấp vào nút OK. Điều này sẽ thêm tệp JAR vào dự án. Sau đó, nhấp vào nút Apply để áp dụng các thay đổi rồi nhấn nút OK.

Sau khi đã hoàn thành tất cả các bước trên, cấu trúc dự án sẽ giống như sau:

Giờ ta sẽ tiếp tục với các đoạn mã:

Trong chương trình sau, ta sử dụng thư viện Apache POI để tạo một file excel. Thư viện cung cấp lớp có tên HSSFWorkbook được định nghĩa trong gói org.apache.poi.hssf.usermodel.

CreateExcelFileExample1.java ​

import java.io.*; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Workbook; public class CreateExcelFileExample1 { public static void main(String[] args) throws IOException {

Kết quả:

“C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1jbrbinjava.exe” “-javaagent:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1libidea_rt.jar=58544:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1bin” -Dfile.encoding=UTF-8 -classpath E:CoursesJavaCreateExcelFileoutproductionCreateExcelFile;E:CoursesJavaCreateExcelFilepoi-3.17.jar CreateExcelFileExample1 File Excel đã được tạo thành công.

Ta đã tạo được một file excel trống tại vị trí được chỉ định.

Giờ ta tạo một chương trình Java khác để tạo một tệp excel.

CreateExcelFileExample2.java​

import java.io.*; public class CreateExcelFileExample2 { public static void main(String[] args) { try { String filename = "C: \ Users \ Anubhav \ Desktop \ CustomersDetail.xlsx"; FileOutputStream fileOut = new FileOutputStream(filename); fileOut.close(); System.out.println("File Excel được tạo thành công."); } catch (Exception e) { e.printStackTrace(); } } }

Kết quả:

“C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1jbrbinjava.exe” “-javaagent:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1libidea_rt.jar=58581:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1bin” -Dfile.encoding=UTF-8 -classpath E:CoursesJavaCreateExcelFileoutproductionCreateExcelFile;E:CoursesJavaCreateExcelFilepoi-3.17.jar CreateExcelFileExample2 File Excel được tạo thành công.

Ta đã tạo được một tệp excel trống tại vị trí được chỉ định.

3. Tạo và chèn dữ liệu vào file Excel

CreateExcelFileExample3.java

import java.io.*; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFRow; public class CreateExcelFileExample3 { public static void main(String[] args) { try { ""//khai báo tên file muốn tạo String filename = "E: \ Courses \ Java \ CreateExcelFile \ Excel3.xlsx";//tạo một đối tượng của lớp HSSFWorkbook HSSFWorkbook workbook = new HSSFWorkbook();//gọi phương thức creatSheet() và truyền tên file muốn tạo HSSFSheet sheet = workbook.createSheet("January");//tạo hàng thứ 0 sử dụng phương thức createRow() HSSFRow rowhead = sheet.createRow((short) 0);//tạo ô bằng cách sử dụng phương thức createCell() và thiết lập giá trị cho ô bằng cách sử dụng phương thức setCellValue() rowhead.createCell(0).setCellValue("S.No."); rowhead.createCell(1).setCellValue("Customer Name"); rowhead.createCell(2).setCellValue("Account Number"); rowhead.createCell(3).setCellValue("e-mail"); rowhead.createCell(4).setCellValue("Balance");//tạo hàng thứ 1 HSSFRow row = sheet.createRow((short) 1);//chèn dữ liệu vào hàng thứ 1 row.createCell(0).setCellValue("1"); row.createCell(1).setCellValue("John William"); row.createCell(2).setCellValue("9999999"); row.createCell(3).setCellValue(row.createCell(4).setCellValue("700000.00");//tạo hàng thứ 2 HSSFRow row1 = sheet.createRow((short) 2);//chèn dữ liệu vào hàng thứ 2 row1.createCell(0).setCellValue("2"); row1.createCell(1).setCellValue("Mathew Parker"); row1.createCell(2).setCellValue("22222222"); row1.createCell(3).setCellValue(row1.createCell(4).setCellValue("200000.00"); FileOutputStream fileOut = new FileOutputStream(filename); workbook.write(fileOut);//đóng stream fileOut.close();//đóng workbook workbook.close();//in thông báo tạo thành công System.out.println("File Excel đã được tạo thành công."); } catch (Exception e) { e.printStackTrace(); } } }[email protected]");[email protected]");

Kết quả:

“C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1jbrbinjava.exe” “-javaagent:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1libidea_rt.jar=58597:C:Program FilesJetBrainsIntelliJ IDEA Community Edition 2019.3.1bin” -Dfile.encoding=UTF-8 -classpath E:CoursesJavaCreateExcelFileoutproductionCreateExcelFile;E:CoursesJavaCreateExcelFilepoi-3.17.jar CreateExcelFileExample3 File Excel đã được tạo thành công.

Nó tạo một tệp excel tại vị trí được chỉ định với các giá trị mà ta đã chèn bằng cách sử dụng phương thức setCellValue().

Cấu Trúc Dữ Liệu Trong Java

Các cấu trúc dữ liệu cung cấp bởi các package tiện ích của Java rất mạnh mẽ và thực hiện các tính năng rộng rãi. Những cấu trúc dữ liệu này bao gồm những interface và class.

Để hiểu sâu hơn các khái niệm được trình bày trong chương này, mời bạn tham khảo loạt bài: .

Lớp Enumeration trong Java

Interface Enumeration bản thân nó không phải là cấu trúc dữ liệu, nhưng rất quan trong bên trong ngữ cảnh sử dụng các cấu trúc dữ liệu khác. Interface Enumeration định nghĩa để nhận các thành phần kế tiếp từ cấu trúc dữ liệu.

Ví dụ, Enumeration định nghĩa phương thức gọi là nextElement được sử dụng để lấy các thành phần tiếp theo trong cấu trúc dữ liệu chứa nhiều thành phần.

Để tìm hiểu chi tiết về interface này, bạn truy cập link sau: .

Lớp BitSet trong Java

Lớp BitSet trong Java triển khai một nhóm các bit hoặc flag mà có thể được thiết lập và xóa một cách riêng rẽ.

Class này rất hữu dụng trong trường hợp bạn muốn lưu trữ một tập các giá trị Boolean và chỉ muốn gắn từng bit các giá trị và thiết lập hoặc xóa nó thích hợp.

Để tìm hiểu chi tiết về class này, bạn truy cập link sau: .

Lớp Vector trong Java

Lớp Vector trong Java là tương tự như các mảng dữ liệu Java truyền thống, ngoại trừ việc có thể tăng lưu trữ cho các thành phần mới.

Giống như mảng, các thành phần trong đối tượng Vector có thể truy cập bởi index.

Một điều tốt về việc sử dụng Vector là bạn không phải lo lắng về việc cài đặt nó cho một kích cỡ cụ thể ngoài việc tạo ra nó, nó có thể tăng và giảm độ lớn khi cần thiết.

Để tìm hiểu chi tiết về class này, bạn truy cập link sau: .

Lớp Stack trong Java

Lớp Stack trong Java triển khai một last-in-first-out (LIFO) stack các phần tử.

Bạn có thể nghĩ về stack như một ngăn xếp thẳng đứng các đối tượng, khi bạn thêm một đối tượng mới, bạn lấy nó ở phần đầu các thành phần khác.

Khi bạn lấy một thành phần trên stack, nó lấy từ trên đỉnh xuống. Theo cách nói khác, thành phần cuối cùng mà bạn thêm vào stack sẽ là thành phần đầu tiên khi lấy ra và ngược lại.

Để tìm hiểu chi tiết về class này, bạn truy cập link sau: .

Lớp Dictionary trong Java

Lớp Dictionary là một abstract class để định nghĩa cấu trúc dữ liệu cho việc liên kết giữa các key tới value.

Nó thực sự hữu ích trong các trường hợp khi bạn muốn có thể truy cập dữ liệu thông qua một key cụ thể thay vì sử dụng một integer index.

Khi lớp Dictionary là abstract, nó chỉ cung cấp framework cho một cấu trúc dữ liệu so khớp key thay vì một sự triển khai cụ thể.

Để tìm hiểu chi tiết về class này, bạn truy cập link sau: .

Lớp Hashtable trong Java

Lớp Hashtable cung cấp các ý nghĩa về mặt tổ chức dữ liệu dựa vào cấu trúc mà người dùng định nghĩa key.

Ví dụ, một danh sách địa chỉ bạn có thể lưu trữ và xếp thứ tự dựa và key như zip code hơn là việc sử dụng tên người.

Để tìm hiểu chi tiết về class này, bạn truy cập link sau: .

Lớp Properties trong Java

Lớp properties là lớp con của Hashtable. Nó được sử dụng để duy trì danh sách các giá trị trong đó key là String và value cũng là một String.

Lớp Properties được sử dụng bởi nhiều class khác trong Java. Ví dụ, bạn có một kiểu đối tượng trả về bởi System.getProperties() để lấy về các biến môi trường.

Để tìm hiểu chi tiết về class này, bạn truy cập link sau: .

Mọi người cho thể tham gia khóa học thứ 6 của vietjackteam (đang tuyển sinh) vào đầu tháng 03/2018 do anh Nguyễn Thanh Tuyền, admin chúng tôi trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : .Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng.

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Trong tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 150k cho khóa học, liên hệ facebook admin chúng tôi để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại . Khóa học có rating 4.7/5 trên udemy từ nhận xét của các bạn học viên.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team hoặc facebook cá nhân Nguyễn Thanh Tuyền để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile…. mới nhất của chúng tôi.

Bài học Java phổ biến tại vietjack.com:

Cách Import Dữ Liệu Từ File Excel Này Vào File Excel Khác

Trong quá trình làm việc nhiều lúc các bạn cần phải import dữ liệu từ một file excel này vào file excel khác, có nhiều cách để các bạn có thể thực hiện yêu cầu này. Hôm nay, hướng dẫn cho các bạn cách import đơn giản mà rất hiệu quả. Việc import dữ liệu qua lại giữa các file excel khác nhau sẽ giúp bạn không phải mất thời gian sao chép hoặc lấy giá trị của từng ô tương ứng cho file excel đích. Điều này tiết kiệm rất nhiều thời gian cho các bạn trong công việc hằng ngày.

Bước 1: Các bạn nên đưa cả file cần lấy dữ liệu ( trong ví dụ là file DuLieuThi.xlsx) và file dữ liệu ( trong ví dụ là file BangDonGia.xlsx) để trong cùng 1 thư mục.

Bước 2: Các bạn mở cả 2 file excel lên. Và lưu ý nhớ rằng trong chúng tôi có sheet cần lấy là sheet BangDo

Bước 4: Dán đường dẫn này vào chính file excel cần lấy dữ liệu (DuLieuThi.xlsx) tại ô cần đưa dữ liệu vào. Lưu ý là phải đặt dấu =’ vào trước đường dẫn. Trong ví dụ này là =’C:UsersAdminDesktopImport excel

Bước 5: Thêm vào sau đường dẫn trên tên của file excel dữ liệu (BangDonGia.xlsx) và sheet chứa dữ liệu theo cú pháp: =’đường dẫn của file cần lấy dữ liệu[tên file excel dữ liệu.xlsx].tên sheet chứa dữ liệu’!

Trong ví dụ này là: =’C:UsersAdminDesktopImport excel[BangDonGia.xlsx].BangDo’!

Lưu ý: Cần phải thêm dấu ‘! vào sau tên của sheet chứa dữ liệu.

Copy đường dẫn =’C:UsersAdminDesktopImport excel[BangDonGia.xlsx].BangDo’! Sau đó vào file excel chứa dữ liệu (cụ thể là file BangDo.xlsx). Dán vào ô đầu tiên của bảng cần lấy dữ liệu.

Bước 7: Sau đó vào lại file excel cần lấy dữ liệu (file DuLieuThi.xlsx) và dán lại đường dẫn và thêm vào sau địa chỉ của ô chứa dữ liệu cần lấy trong BangDonGia.xlsx. Đường dẫn là: =’C:UsersAdminDesktopImport excel[BangDonGia.xlsx].BangDo’!A1.

Để thực hành chức năng này, các bạn có thể download dữ liệu file excel:

Cách Sửa Lỗi Ngày Tháng Của Dữ Liệu Được Trích Xuất Từ Phần Mềm Ra Excel Chi Tiết Nhất

Khi trích xuất dữ liệu từ các phần mềm khác (ví dụ như phần mềm chấm công) ra excel, chúng ta thường gặp phải 1 vấn đề đó là dữ liệu ngày tháng, thời gian thường bị lỗi, không thể sử dụng để tính toán ngay. Trong bài viết này chúng tôi sẽ hướng dẫn các bạn cách sửa lỗi ngày tháng của dữ liệu được trích xuất từ phần mềm ra excel.

Đặc điểm dữ liệu thời gian trích xuất từ phần mềm

Trong file ví dụ chúng ta có bảng dữ liệu được trích xuất từ phần mềm chấm công như sau:

Trong đó các cột Date và InTime là dữ liệu dạng Ngày và Giờ. Tuy nhiên những dữ liệu này lại không dùng để tính toán ngay được vì nó không phải dữ liệu đúng chuẩn dạng thời gian mà Excel quy định.

Chúng ta có thể kiểm tra bằng cách sử dụng hàm IsNumber cho cột B và C như sau:

Như vậy về bản chất dữ liệu trong ô B2 là Text chứ không phải Number. Do đó không dùng trong tính toán được.

Cách sửa lỗi định dạng thời gian

Hàm VALUE giúp chuyển dữ liệu từ dạng Text về dạng Number. Về bản chất, dữ liệu thời gian trong Excel là dạng Number.

Cách làm như sau:

Bước 1: Tại cột E (cột phụ), chúng ta dùng hàm VALUE, đối tượng của hàm VALUE là giá trị trong cột B

Ví dụ: E2=VALUE(B2)

Kết quả của đoạn text 1/Jun/2018 khi chuyển sang Number có giá trị là 43252

Bước 2: Copy kết quả của hàm Value, dán trở lại vào cột B

Bước 3: Định dạng dữ liệu bằng Format cells

Chúng ta sẽ định dạng lại dữ liệu trong cột B để đưa về đúng định dạng dd/mm/yyyy bằng cách:

Chọn vùng dữ liệu trong cột B

Mở Format Cells (phím tắt Ctrl + 1)

Trong thẻ Number chọn Custome, trong mục Type nhập dd/mm/yyyy

Như vậy kết quả thu được sẽ là dữ liệu dạng thời gian có dạng ngày/tháng/năm đúng tiêu chuẩn của Excel.

Cách 2: Dùng công cụ TextToColumn

TextToColumn là một công cụ khá hữu ích trong Excel. Ngoài việc tách dữ liệu ra nhiều cột thì nó còn có tác dụng chuyển đổi dữ liệu về đúng định dạng tiêu chuẩn trong Excel. Cách thực hiện như sau:

Bước 1: Chọn bảng dữ liệu cần chuyển đổi, trong thẻ Data chọn TextToColumn

Bước 2: Trong cửa sổ TextToColumn (step 1 of 3) bấm Next để sang Step 2 of 3

Bước 3: Bấm Next một lần nữa để sang Step 3 of 3

Tại bước này, chúng ta bấm chọn mục Date và chọn tương ứng cách hiển thị thời gian theo dạng DMY (D là ngày, M là tháng, Y là năm)

Sau đó bấm Finish để hoàn thành.

Cả 2 cách đều áp dụng được cho dữ liệu Ngày, Giờ

Cách dùng hàm VALUE sẽ tuân thủ theo thiết lập ngày tháng mặc định trong Region của máy tính (Control pannel/ Region/ Date-Time)

Cách dùng TextToColumn cho phép tự do lựa chọn cách hiển thị Tháng trước Ngày sau hay Ngày trước tháng sau một cách linh hoạt hơn. Kết quả trả về ngay tại vị trí ban đầu, không cần copy/paste như cách dùng hàm VALUE

Tìm hiểu thêm các nội dung tương tự:

Hướng dẫn chuyển kiểu định dạng dữ liệu từ số (Number) sang chữ (Text) trong Excel Hướng dẫn cách chuyển từ ngày tháng (Date) về định dạng số (Number) hoặc chữ (Text) trong Excel Sử dụng hàm VALUE và các tùy chọn khác để chuyển đổi định dạng của số từ text sang number

Tài liệu kèm theo bài viết

Với sứ mệnh: ” Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người “, đội ngũ phát triển đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án…

Gitiho tự hào khi được đồng hành cùng:

50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…