Apache POI - Hướng dẫn nhanh

Đôi khi, một ứng dụng phần mềm được yêu cầu để tạo báo cáo ở định dạng tệp Microsoft Excel. Đôi khi, một ứng dụng thậm chí được cho là sẽ nhận các tệp Excel làm dữ liệu đầu vào. Ví dụ: một ứng dụng được phát triển cho bộ phận Tài chính của một công ty sẽ được yêu cầu để tạo tất cả các kết quả đầu ra của họ trong Excel.

Bất kỳ lập trình viên Java nào muốn tạo tệp MS Office dưới dạng đầu ra đều phải sử dụng API chỉ đọc và được xác định trước để làm như vậy.

Apache POI là gì?

Apache POI là một API phổ biến cho phép lập trình viên tạo, sửa đổi và hiển thị các tệp MS Office bằng các chương trình Java. Nó là một thư viện mã nguồn mở được phát triển và phân phối bởi Apache Software Foundation để thiết kế hoặc sửa đổi các tệp Microsoft Office bằng chương trình Java. Nó chứa các lớp và phương thức để giải mã dữ liệu đầu vào của người dùng hoặc một tệp thành tài liệu MS Office.

Các thành phần của Apache POI

Apache POI chứa các lớp và phương thức để hoạt động trên tất cả các tài liệu OLE2 Compound của MS Office. Danh sách các thành phần của API này được đưa ra bên dưới.

  • POIFS(Hệ thống tệp thực hiện sai lệch kém) - Thành phần này là yếu tố cơ bản của tất cả các yếu tố POI khác. Nó được sử dụng để đọc các tệp khác nhau một cách rõ ràng.

  • HSSF (Định dạng bảng tính kinh khủng) - Nó được sử dụng để đọc và viết xls định dạng tệp MS-Excel.

  • XSSF (Định dạng bảng tính XML) - Nó được sử dụng cho xlsx định dạng tệp MS-Excel.

  • HPSF (Định dạng Tập thuộc tính Kinh khủng) - Nó được sử dụng để giải nén property sets của các tệp MS-Office.

  • HWPF (Định dạng bộ xử lý Word kinh khủng) - Nó được sử dụng để đọc và viết doc các tập tin mở rộng của MS-Word.

  • XWPF (Định dạng bộ xử lý văn bản XML) - Nó được sử dụng để đọc và ghi docx các tập tin mở rộng của MS-Word.

  • HSLF (Định dạng Bố cục Trang chiếu Kinh khủng) - Nó được sử dụng để đọc, tạo và chỉnh sửa các bản trình bày PowerPoint.

  • HDGF (Định dạng DiaGram kinh khủng) - Nó chứa các lớp và phương thức cho MS-Visio tệp nhị phân.

  • HPBF (Định dạng PuBlisher kinh khủng) - Nó được sử dụng để đọc và viết MS-Publisher các tập tin.

Hướng dẫn này hướng dẫn bạn quy trình làm việc trên các tệp Excel bằng Java. Do đó, cuộc thảo luận chỉ giới hạn trong các thành phần HSSF và XSSF.

Note - Các phiên bản cũ hơn của POI hỗ trợ các định dạng tệp nhị phân như doc, xls, ppt, v.v. Phiên bản 3.5 trở đi, POI hỗ trợ các định dạng tệp OOXML của MS-Office như docx, xlsx, pptx, v.v.

Giống như Apache POI, có các thư viện khác được cung cấp bởi các nhà cung cấp khác nhau để tạo tệp Excel. Bao gồm cácAspose cells for Java bởi Aspose, JXL bởi Commons Libraries, và JExcel bởi Team Dev.

Chương này sẽ đưa bạn qua một số hương vị của API Java Excel và các tính năng của chúng. Có nhiều nhà cung cấp cung cấp các API liên quan đến Java Excel; một số trong số chúng được xem xét trong chương này.

Aspose Cells dành cho Java

Aspose Cells cho Java là một API Java Excel được cấp phép thuần túy được phát triển và phân phối bởi nhà cung cấp Aspose. Phiên bản mới nhất của API này là 8.1.2, được phát hành vào tháng 7 năm 2014. Đây là một API phong phú và nặng (kết hợp giữa các lớp Java thuần túy và các lớp AWT) để thiết kế thành phần Excel có thể đọc, viết và thao tác trên bảng tính.

Các ứng dụng phổ biến của API này như sau:

  • Báo cáo Excel, xây dựng báo cáo Excel động
  • Kết xuất và in Excel độ trung thực cao
  • Nhập và xuất dữ liệu từ bảng tính Excel
  • Tạo, chỉnh sửa và chuyển đổi bảng tính

JXL

JXL là một khuôn khổ của bên thứ ba được thiết kế cho Selenium hỗ trợ tự động hóa theo hướng dữ liệu trên trình duyệt web (tự động cập nhật dữ liệu trên trình duyệt web). Tuy nhiên, nó cũng được sử dụng như một thư viện hỗ trợ chung cho JExcel API vì nó có các tính năng cơ bản để tạo, đọc và ghi bảng tính.

Các tính năng cơ bản như sau:

  • Tạo tệp Excel
  • Nhập dữ liệu từ sổ làm việc và bảng tính
  • Nhận tổng số hàng và cột

Note - JXL chỉ hỗ trợ định dạng tệp .xls và nó không thể xử lý khối lượng dữ liệu lớn.

JExcel

JExcel là một API được cấp phép thuần túy do Team Dev cung cấp. Sử dụng tính năng này, các lập trình viên có thể dễ dàng đọc, ghi, hiển thị và sửa đổi sổ làm việc Excel trong cả hai.xls.xlsxcác định dạng. API này có thể được nhúng dễ dàng với Java Swing và AWT. Phiên bản mới nhất của API này là Jexcel-2.6.12, được phát hành vào năm 2009.

Các tính năng chính như sau:

  • Tự động hóa ứng dụng Excel, sổ làm việc, bảng tính, v.v.
  • Nhúng sổ làm việc vào ứng dụng Java Swing làm thành phần Swing thông thường
  • Thêm trình nghe sự kiện vào sổ làm việc và bảng tính
  • Thêm trình xử lý sự kiện để xử lý hành vi của sự kiện sổ làm việc và bảng tính
  • Thêm đồng nghiệp gốc để phát triển chức năng tùy chỉnh

Apache POI

Apache POI là một thư viện mã nguồn mở 100% được cung cấp bởi Apache Software Foundation. Hầu hết các nhà phát triển ứng dụng quy mô vừa và nhỏ phụ thuộc rất nhiều vào Apache POI (HSSF + XSSF). Nó hỗ trợ tất cả các tính năng cơ bản của thư viện Excel; tuy nhiên, kết xuất và trích xuất văn bản là các tính năng chính của nó.

Chương này sẽ hướng dẫn bạn quá trình thiết lập Apache POI trên các hệ thống chạy Windows và Linux. Apache POI có thể được cài đặt và tích hợp dễ dàng với môi trường Java hiện tại của bạn theo một vài bước đơn giản mà không cần bất kỳ thủ tục thiết lập phức tạp nào. Quản trị người dùng được yêu cầu trong khi cài đặt.

yêu cầu hệ thống

JDK Java SE 2 JDK 1.5 trở lên
Ký ức RAM 1 GB (khuyến nghị)
Dung lượng đĩa Không có yêu cầu tối thiểu
Phiên bản hệ điều hành Windows XP trở lên, Linux

Bây giờ chúng ta hãy tiến hành các bước cài đặt Apache POI.

Bước 1: Xác minh cài đặt Java của bạn

Trước hết, bạn cần cài đặt Bộ phát triển phần mềm Java (SDK) trên hệ thống của mình. Để xác minh điều này, hãy thực hiện bất kỳ lệnh nào trong hai lệnh tùy thuộc vào nền tảng bạn đang làm việc.

Nếu cài đặt Java đã được thực hiện đúng cách, thì nó sẽ hiển thị phiên bản hiện tại và đặc điểm kỹ thuật của cài đặt Java của bạn. Đầu ra mẫu được đưa ra trong bảng sau.

Nền tảng Chỉ huy Đầu ra mẫu
các cửa sổ

Mở bảng điều khiển lệnh và gõ -

\>java –version

Phiên bản Java "1.7.0_60"

Môi trường thời gian chạy Java (TM) SE (bản dựng 1.7.0_60-b19)

Java Hotspot (TM) Máy chủ 64-bit VM (bản dựng 24.60-b09, chế độ hỗn hợp)

Linux

Mở đầu cuối lệnh và nhập -

$java –version

phiên bản java "1.7.0_25"

Mở môi trường thời gian chạy JDK (rhel-2.3.10.4.el6_4-x86_64)

Mở JDK 64-Bit Server VM (bản dựng 23.7-b01, chế độ hỗn hợp)

  • Chúng tôi giả định rằng người đọc của hướng dẫn này đã cài đặt Java SDK phiên bản 1.7.0_60 trên hệ thống của họ.

  • Trong trường hợp bạn không có Java SDK, hãy tải xuống phiên bản hiện tại của nó từ https://www.oracle.com/technetwork/java/javase/downloads/index.html và đã cài đặt nó.

Bước 2: Đặt Môi trường Java của bạn

Đặt biến môi trường JAVA_HOME trỏ đến vị trí thư mục cơ sở nơi Java được cài đặt trên máy của bạn. Ví dụ,

Sr.No. Nền tảng & Mô tả
1

Windows

Đặt JAVA_HOME thành C: \ ProgramFiles \ java \ jdk1.7.0_60

2

Linux

Xuất JAVA_HOME = / usr / local / java-current

Nối đường dẫn đầy đủ của vị trí trình biên dịch Java vào Đường dẫn hệ thống.

Sr.No. Nền tảng & Mô tả
1

Windows

Nối chuỗi "C: \ Program Files \ Java \ jdk1.7.0_60 \ bin" vào cuối biến hệ thống PATH.

2

Linux

Xuất PATH = $ PATH: $ JAVA_HOME / bin /

Thực hiện lệnh java -version từ dấu nhắc lệnh như đã giải thích ở trên.

Bước 3: Cài đặt Apache POI Library

Tải xuống phiên bản Apache POI mới nhất từ https://poi.apache.org/download.htmlvà giải nén nội dung của nó vào một thư mục mà từ đó các thư viện bắt buộc có thể được liên kết với chương trình Java của bạn. Giả sử các tệp được thu thập trong một thư mục trên ổ C.

Các hình ảnh sau đây hiển thị các thư mục và cấu trúc tệp bên trong thư mục đã tải xuống.

Thêm đường dẫn hoàn chỉnh của năm jars như được đánh dấu trong hình trên vào CLASSPATH.

Sr.No. Nền tảng & Mô tả
1

Windows

Nối các chuỗi sau vào cuối biến người dùng

CLASSPATH -

“C: \ poi-3.9 \ poi-3.9-20121203.jar;”

“C: \ poi-3.9 \ poi-ooxml-3.9-20121203.jar;”

“C: \ poi-3.9 \ poi-ooxml-schemas-3.9-20121203.jar;”

“C: \ poi-3.9 \ ooxml-lib \ dom4j-1.6.1.jar;”

“C: \ poi-3.9 \ ooxml-lib \ xmlbeans-2.3.0.jar;.;”

2

Linux

Xuất CLASSPATH = $ CLASSPATH:

/usr/share/poi-3.9/poi-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-schemas-3.9-20121203.tar:

/usr/share/poi-3.9/poi-ooxml-3.9-20121203.tar:

/usr/share/poi-3.9/ooxml-lib/dom4j-1.6.1.tar:

/usr/share/poi-3.9/ooxml-lib/xmlbeans-2.3.0.tar

Chương này giải thích một số lớp và phương thức trong API Apache POI rất quan trọng để hoạt động trên các tệp Excel bằng các chương trình Java.

Sách bài tập

Đây là siêu giao diện của tất cả các lớp tạo hoặc duy trì sổ làm việc Excel. Nó thuộc vềorg.apache.poi.ss.usermodelgói hàng. Hai lớp thực thi giao diện này như sau:

  • HSSFWorkbook- Lớp này có các phương thức đọc và ghi tệp Microsoft Excel ở định dạng .xls. Nó tương thích với MS-Office phiên bản 97–2003.

  • XSSFWorkbook- Lớp này có các phương thức để đọc và ghi các tệp xml của Microsoft Excel và OpenOffice ở định dạng .xls hoặc .xlsx. Nó tương thích với MS-Office phiên bản 2007 trở lên.

HSSFWorkbook

Nó là một lớp cấp cao dưới org.apache.poi.hssf.usermodelgói hàng. Nó thực hiệnWorkbookvà được sử dụng cho các tệp Excel ở định dạng .xls. Dưới đây là một số phương thức và hàm tạo trong lớp này.

Trình tạo lớp

Sr.No. Hàm tạo & Mô tả
1

HSSFWorkbook()

Tạo một đối tượng HSSFWorkbook mới từ đầu.

2

HSSFWorkbook(DirectoryNode directory, boolean preserveNodes)

Tạo một đối tượng HSSFWworkbook mới bên cạnh một thư mục cụ thể.

3

HSSFWorkbook(DirectoryNode directory, POIFSFileSystem fs, boolean preserveNodes)

Cho một đối tượng POIFSFileSystem và một thư mục cụ thể bên trong nó, nó tạo một đối tượng SSFWorkbook để đọc một sổ làm việc được chỉ định.

4

HSSFWorkbook(java.io.InputStream s)

Tạo một đối tượng HSSFWorkbook mới bằng cách sử dụng luồng đầu vào.

5

HSSFWorkbook(java.io.InputStream s, boolean preserveNodes)

Xây dựng hệ thống tệp POI xung quanh luồng đầu vào của bạn.

6

HSSFWorkbook(POIFSFileSystem fs)

Tạo đối tượng HSSFWorkbook mới bằng cách sử dụng đối tượng POIFSFileSystem.

7

HSSFWorkbook(POIFSFileSystem fs, boolean preserveNodes)

Cho một đối tượng POIFSFileSystem, nó tạo một đối tượng HSSFWorkbook mới để đọc một sổ làm việc được chỉ định.

Các tham số thường được sử dụng bên trong các hàm tạo này là:

  • directory - Đây là thư mục hệ thống tệp POI để xử lý.

  • fs - Đây là hệ thống tệp POI chứa dòng sổ làm việc.

  • preservenodes- Đây là tham số tùy chọn quyết định có bảo toàn các nút khác như macro hay không. Nó tiêu tốn rất nhiều bộ nhớ vì nó lưu trữ tất cả POIFileSystem trong bộ nhớ (nếu được đặt).

Note- Lớp HSSFWorkbook chứa một số phương thức; tuy nhiên chúng chỉ tương thích với định dạng xls. Trong hướng dẫn này, trọng tâm là phiên bản mới nhất của các định dạng tệp Excel. Do đó, các phương thức lớp của HSSFWorkbook không được liệt kê ở đây. Nếu bạn yêu cầu các phương thức lớp này, hãy tham khảo API lớp POI-HSSFWorkbook tạihttps://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFWorkbook.html.

XSSFWorkbook

Nó là một lớp được sử dụng để đại diện cho cả định dạng tệp Excel cấp cao và cấp thấp. Nó thuộc vềorg.apache.xssf.usemodel gói và triển khai Workbookgiao diện. Dưới đây là danh sách các phương thức và hàm tạo trong lớp này.

Trình tạo lớp

Sr.No. Hàm tạo & Mô tả
1

XSSFWorkbook()

Tạo một đối tượng XSSFworkbook mới từ đầu.

2

XSSFWorkbook(java.io.File file)

Tạo đối tượng XSSFWorkbook từ một tệp nhất định.

3

XSSFWorkbook(java.io.InputStream is)

Xây dựng một đối tượng XSSFWorkbook, bằng cách đệm toàn bộ luồng đầu vào vào bộ nhớ và sau đó mở một đối tượng OPCPackage cho nó.

4

XSSFWorkbook(java.lang.String path)

Xây dựng đối tượng XSSFWorkbook cung cấp đường dẫn đầy đủ của tệp.

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

createSheet()

Tạo XSSFSheet cho sổ làm việc này, thêm nó vào các trang tính và trả về biểu diễn cấp cao.

2

createSheet(java.lang.String sheetname)

Tạo một trang tính mới cho Sổ làm việc này và trả về biểu diễn cấp cao.

3

createFont()

Tạo một phông chữ mới và thêm nó vào bảng phông chữ của sổ làm việc.

4

createCellStyle()

Tạo XSSFCellStyle mới và thêm nó vào bảng kiểu của sổ làm việc.

5

createFont()

Tạo một phông chữ mới và thêm nó vào bảng phông chữ của sổ làm việc.

6

setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow,int endRow)

Đặt vùng in của một trang tính nhất định theo các thông số được chỉ định.

Đối với các phương thức còn lại của lớp này, hãy tham khảo tài liệu API hoàn chỉnh tại: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html. để có danh sách đầy đủ các phương pháp.

Tấm

Trang tính là một giao diện dưới org.apache.poi.ss.usermodelgói và nó là một siêu giao diện của tất cả các lớp tạo ra các bảng tính cấp cao hoặc cấp thấp với các tên cụ thể. Loại bảng tính phổ biến nhất là bảng tính, được biểu diễn dưới dạng lưới các ô.

HSSFSheet

Đây là một lớp dưới org.apache.poi.hssf.usermodelgói hàng. Nó có thể tạo bảng tính excel và nó cho phép định dạng kiểu trang tính và dữ liệu trang tính.

Trình tạo lớp

Sr.No. Hàm tạo & Mô tả
1

HSSFSheet(HSSFWorkbook workbook)

Tạo HSSFSheet mới được gọi bởi HSSFWorkbook để tạo một trang tính từ đầu.

2

HSSFSheet(HSSFWorkbook workbook, InternalSheet sheet)

Tạo một HSSFSheet đại diện cho đối tượng sheet đã cho.

XSSFSheet

Đây là một lớp đại diện cho biểu diễn cấp cao của bảng tính excel. Nó nằm dướiorg.apache.poi.hssf.usermodel gói hàng.

Trình tạo lớp

Sr.No. Hàm tạo & Mô tả
1

XSSFSheet()

Tạo XSSFSheet mới - được gọi là XSSFWorkbook để tạo một trang tính từ đầu.

2

XSSFSheet(PackagePart part, PackageRelationship rel)

Tạo một XSSFSheet thể hiện mối quan hệ và phần gói đã cho.

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

addMergedRegion(CellRangeAddress region)

Thêm một vùng ô đã hợp nhất (do đó các ô đó tạo thành một).

2

autoSizeColumn(int column)

Điều chỉnh chiều rộng cột để vừa với nội dung.

3

iterator()

Phương thức này là một bí danh cho rowIterator () để cho phép các vòng lặp foreach

4

addHyperlink(XSSFHyperlink hyperlink)

Đăng ký một siêu liên kết trong tập hợp các siêu liên kết trên trang tính này

Đối với các phương thức còn lại của lớp này, hãy tham khảo API hoàn chỉnh tại: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFSheet.html.

Hàng

Đây là một giao diện dưới org.apache.poi.ss.usermodelgói hàng. Nó được sử dụng để biểu diễn cấp cao của một hàng trong bảng tính. Nó là một siêu giao diện của tất cả các lớp đại diện cho các hàng trong thư viện POI.

XSSFRow

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó triển khai giao diện Row, do đó nó có thể tạo các hàng trong bảng tính. Dưới đây là danh sách các phương thức và hàm tạo trong lớp này.

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

createCell(int columnIndex)

Tạo các ô mới trong hàng và trả về nó.

2

setHeight(short height)

Đặt chiều cao theo đơn vị ngắn.

Đối với các phương thức còn lại của lớp này, hãy theo liên kết đã cho https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRow.html

Ô

Đây là một giao diện dưới org.apache.poi.ss.usermodelgói hàng. Nó là một siêu giao diện của tất cả các lớp đại diện cho các ô trong các hàng của bảng tính.

Các ô có thể nhận các thuộc tính khác nhau như trống, số, ngày tháng, lỗi, v.v. Các ô phải có số riêng (dựa trên 0) trước khi được thêm vào một hàng.

XSSFCell

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó thực hiện giao diện Cell. Nó là một đại diện cấp cao của các ô trong các hàng của bảng tính.

Tóm tắt trường

Dưới đây là danh sách một số trường của lớp XSSFCell cùng với mô tả của chúng.

Sr.No. Loại & Mô tả Ô
1

CELL_TYPE_BLANK

Đại diện cho ô trống

2

CELL_TYPE_BOOLEAN

Đại diện cho ô Boolean (đúng hoặc sai)

3

CELL_TYPE_ERROR

Đại diện cho giá trị lỗi trên một ô

4

CELL_TYPE_FORMULA

Biểu thị kết quả công thức trên một ô

5

CELL_TYPE_NUMERIC

Biểu diễn dữ liệu số trên một ô

6

CELL_TYPE_STRING

Biểu diễn chuỗi (văn bản) trên một ô

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

setCellStyle(CellStyle style)

Đặt kiểu cho ô.

2

setCellType(int cellType)

Đặt loại ô (số, công thức hoặc chuỗi).

3

setCellValue(boolean value)

Đặt giá trị boolean cho ô.

4

setCellValue(java.util.Calendar value)

Đặt giá trị ngày tháng cho ô.

5

setCellValue(double value)

Đặt giá trị số cho ô.

6

setCellValue(java.lang.String str)

Đặt giá trị chuỗi cho ô.

7

setHyperlink(Hyperlink hyperlink)

Gán một siêu liên kết cho ô này.

Đối với các phương thức và trường còn lại của lớp này, hãy truy cập liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html

XSSFCellStyle

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó sẽ cung cấp thông tin có thể có liên quan đến định dạng của nội dung trong một ô của bảng tính. Nó cũng cung cấp các tùy chọn để sửa đổi định dạng đó. Nó thực hiện giao diện CellStyle.

Tóm tắt trường

Bảng sau liệt kê một vài trường được kế thừa từ giao diện CellStyle.

Sr.No. Trường & Mô tả
1

ALIGN_CENTER

Căn giữa nội dung ô

2

ALIGN_CENTER_SELECTION

Căn chỉnh ngang để chọn trung tâm

3

ALIGN_FILL

Ô vừa với kích thước nội dung

4

ALIGN_JUSTIFY

Điều chỉnh nội dung ô với chiều rộng của nó

5

ALIGN_LEFT

Căn trái nội dung ô

6

ALIGN_RIGHT

Căn phải nội dung ô

7

BORDER_DASH_DOT

Kiểu ô với dấu gạch ngang và dấu chấm

số 8

BORDER_DOTTED

Kiểu ô có đường viền chấm

9

BORDER_DASHED

Kiểu ô có đường viền đứt nét

10

BORDER_THICK

Kiểu ô với đường viền dày

11

BORDER_THIN

Kiểu ô với đường viền mỏng

12

VERTICAL_BOTTOM

Căn chỉnh nội dung ô theo chiều dọc dưới cùng

13

VERTICAL_CENTER

Căn giữa nội dung ô theo chiều dọc

15

VERTICAL_JUSTIFY

Căn chỉnh và căn đều nội dung ô theo chiều dọc

16

VERTICAL_TOP

Căn chỉnh theo chiều dọc được căn trên

Trình tạo lớp

Sr.No. Hàm tạo & Mô tả
1

XSSFCellStyle(int cellXfId, int cellStyleXfId, StylesTable stylesSource, ThemesTable theme)

Tạo kiểu ô từ các phần được cung cấp

2

XSSFCellStyle(StylesTable stylesSource)

Tạo kiểu ô trống

Phương pháp lớp học

S.Không Phương pháp & Mô tả
1

setAlignment(short align)

Đặt kiểu căn chỉnh ngang cho ô

2

setBorderBottom(short border)

Đặt loại đường viền cho đường viền dưới cùng của ô

3

setBorderColor(XSSFCellBorder.BorderSide side, XSSFColor color)

Đặt màu cho đường viền đã chọn

4

setBorderLeft(Short border)

Đặt loại đường viền cho đường viền bên trái của ô

5

setBorderRight(short border)

Đặt loại đường viền cho đường viền bên phải của ô

6

setBorderTop(short border)

Đặt loại đường viền cho đường viền trên cùng của ô

7

setFillBackgroundColor(XSSFColor color)

Đặt màu tô nền được biểu thị dưới dạng giá trị XSSFColor.

số 8

setFillForegroundColor(XSSFColor color)

Đặt màu tô nền trước được biểu thị dưới dạng giá trị XSSFColor.

9

setFillPattern(short fp)

Chỉ định thông tin điền ô cho mẫu và điền ô màu đồng nhất.

10

setFont(Font font)

Đặt phông chữ cho kiểu này.

11

setRotation(short rotation)

Đặt mức độ xoay cho văn bản trong ô.

12

setVerticalAlignment(short align)

Đặt kiểu căn chỉnh dọc cho ô.

Đối với các phương thức và trường còn lại trong lớp này, hãy truy cập liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCellStyle.html

HSSFColor

Đây là một lớp dưới org.apache.poi.hssf.utilgói hàng. Nó cung cấp các màu khác nhau dưới dạng các lớp lồng nhau. Thông thường các lớp lồng nhau này được biểu diễn bằng cách sử dụng các chỉ mục riêng của chúng. Nó thực hiện giao diện Màu.

Các lớp lồng nhau

Tất cả các lớp lồng nhau của lớp này là tĩnh và mỗi lớp có chỉ mục của nó. Các lớp màu lồng nhau này được sử dụng để định dạng ô như nội dung ô, đường viền, nền trước và nền. Dưới đây là một số lớp lồng nhau.

Sr.No. Tên lớp (màu sắc)
1 HSSFColor.AQUA
2 HSSFColor.AUTOMATIC
3 HSSFColor.BLACK
4 HSSFColor.BLUE
5 HSSFColor.BRIGHT_GREEN
6 HSSFColor.BRIGHT_GRAY
7 HSSFColor.CORAL
số 8 HSSFColor.DARK_BLUE
9 HSSFColor.DARK_GREEN
10 HSSFColor.SKY_BLUE
11 HSSFColor.WHITE
12 HSSFColor.YELLOW

Phương pháp lớp học

Chỉ một phương thức của lớp này là quan trọng và được sử dụng để lấy giá trị chỉ mục.

Sr.No. Phương pháp & Mô tả
1

getIndex()

Phương thức này được sử dụng để lấy giá trị chỉ mục của một lớp lồng nhau.

Đối với các phương thức còn lại và các lớp lồng nhau, hãy tham khảo liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/hssf/util/HSSFColor.html

XSSFColor

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó được sử dụng để thể hiện màu trong bảng tính. Nó thực hiện giao diện Màu. Dưới đây là một số phương thức và hàm tạo của nó.

Trình tạo lớp

Sr.No. Hàm tạo & Mô tả
1

XSSFColor()

Tạo một phiên bản XSSFColor mới.

2

XSSFColor(byte[] rgb)

Tạo một phiên bản XSSFColor mới bằng RGB.

3

XSSFColor(java.awt.Color clr)

Tạo một phiên bản XSSFColor mới bằng cách sử dụng lớp Màu từ gói awt.

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

setAuto(boolean auto)

Đặt giá trị boolean để chỉ ra rằng ctColor là tự động và ctColor hệ thống phụ thuộc.

2

setIndexed(int indexed)

Đặt giá trị ctColor được lập chỉ mục làm ctColor hệ thống.

Đối với các phương pháp còn lại, hãy truy cập liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFColor.html

XSSFFont

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó thực hiện giao diện Phông chữ và do đó nó có thể xử lý các phông chữ khác nhau trong sổ làm việc.

Hàm tạo lớp

Sr.No. Hàm tạo & Mô tả
1

XSSFFont()

Tạo một phiên bản XSSFont mới.

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

setBold(boolean bold)

Đặt giá trị Boolean cho thuộc tính 'bold'.

2

setColor(short color)

Đặt màu được lập chỉ mục cho phông chữ.

3

setColor(XSSFColor color)

Đặt màu cho phông chữ trong giá trị màu Chuẩn Alpha RGB.

4

setFontHeight(short height)

Đặt chiều cao phông chữ theo điểm.

5

setFontName(java.lang.String name)

Đặt tên cho phông chữ.

6

setItalic(boolean italic)

Đặt giá trị Boolean cho thuộc tính 'italic'.

Đối với các phương pháp còn lại, hãy truy cập liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html

XSSFHyperlink

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó thực hiện giao diện Hyperlink. Nó được sử dụng để đặt siêu liên kết đến nội dung ô của bảng tính.

Lĩnh vực

Các trường của lớp này như sau. Ở đây, các trường có nghĩa là loại siêu liên kết được sử dụng.

Sr.No. Trường & Mô tả
1

LINK_DOCUMENT

Được sử dụng để liên kết bất kỳ tài liệu nào khác

2

LINK_EMAIL

Dùng để liên kết email

3

LINK_FILE

Được sử dụng để liên kết bất kỳ tệp nào khác ở bất kỳ định dạng nào

4

LINK_URL

Được sử dụng để liên kết một URL web

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

setAddress(java.lang.String address)

Địa chỉ siêu kết nối.

Đối với các phương pháp còn lại, hãy truy cập liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFHyperlink.html

XSSFCreationHelper

Đây là một lớp dưới org.apache.poi.xssf.usermodelgói hàng. Nó thực hiện giao diện CreationHelper. Nó được sử dụng như một lớp hỗ trợ để đánh giá công thức và thiết lập siêu liên kết.

Phương thức lớp

Sr.No. Phương pháp & Mô tả
1

createFormulaEvaluator()

Tạo một phiên bản XSSFFormulaEvaluator, đối tượng đánh giá các ô công thức.

2

createHyperlink(int type)

Tạo liên kết XSSFHyperlink mới.

Đối với các phương pháp còn lại, hãy tham khảo liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCreationHelper.html

XSSFPrintSetup

Đây là một lớp dưới org.apache.poi.xsssf.usermodelgói hàng. Nó thực hiệnPrintSetupgiao diện. Nó được sử dụng để đặt kích thước trang in, diện tích, tùy chọn và cài đặt.

Phương pháp lớp học

Sr.No. Phương pháp & Mô tả
1

setLandscape(boolean ls)

Đặt giá trị boolean để cho phép hoặc chặn in ngang.

2

setLeftToRight(boolean ltor)

Đặt chuyển từ trái sang phải hoặc từ trên xuống theo thứ tự trong khi in.

3

setPaperSize(short size)

Đặt kích thước giấy.

Đối với các phương pháp còn lại, hãy truy cập liên kết sau: https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFPrintSetup.html

Ở đây thuật ngữ 'Workbook' có nghĩa là tệp Microsoft Excel. Sau khi hoàn thành chương này, bạn sẽ có thể tạo các Sổ làm việc mới và mở các Sổ làm việc hiện có bằng chương trình Java của mình.

Tạo sổ làm việc trống

Chương trình đơn giản sau được sử dụng để tạo Sổ làm việc Microsoft Excel trống.

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class CreateWorkBook {
   public static void main(String[] args)throws Exception {
      //Create Blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create file system using specific name
      FileOutputStream out = new FileOutputStream(new File("createworkbook.xlsx"));

      //write operation workbook using file out object 
      workbook.write(out);
      out.close();
      System.out.println("createworkbook.xlsx written successfully");
   }
}

Hãy để chúng tôi lưu mã Java ở trên dưới dạng CreateWorkBook.java, sau đó biên dịch và thực thi nó từ dấu nhắc lệnh như sau:

$javac CreateWorkBook.java $java CreateWorkBook

Nếu môi trường hệ thống của bạn được định cấu hình với thư viện POI, nó sẽ biên dịch và thực thi để tạo tệp Excel trống có tên createworkbook.xlsx trong thư mục hiện tại của bạn và hiển thị đầu ra sau trong dấu nhắc lệnh.

createworkbook.xlsx written successfully

Mở Sổ làm việc Hiện có

Sử dụng mã sau để mở một sổ làm việc hiện có.

import java.io.*;
import org.apache.poi.xssf.usermodel.*;

public class OpenWorkBook {
   public static void main(String args[])throws Exception { 
      File file = new File("openworkbook.xlsx");
      FileInputStream fIP = new FileInputStream(file);
      
      //Get the workbook instance for XLSX file 
      XSSFWorkbook workbook = new XSSFWorkbook(fIP);
      
      if(file.isFile() && file.exists()) {
         System.out.println("openworkbook.xlsx file open successfully.");
      } else {
         System.out.println("Error to open openworkbook.xlsx file.");
      }
   }
}

Lưu mã Java ở trên dưới dạng OpenWorkBook.java, sau đó biên dịch và thực thi nó từ dấu nhắc lệnh như sau:

$javac OpenWorkBook.java $java OpenWorkBook

Nó sẽ biên dịch và thực thi để tạo ra kết quả sau.

openworkbook.xlsx file open successfully.

Sau khi mở sổ làm việc, bạn có thể thực hiện các thao tác đọc và ghi trên đó.

Chương này giải thích cách tạo bảng tính và thao tác với nó bằng Java. Bảng tính là một trang trong tệp Excel; nó chứa các hàng và cột có tên cụ thể.

Sau khi hoàn thành chương này, bạn sẽ có thể tạo bảng tính và thực hiện các thao tác đọc trên đó.

Tạo bảng tính

Trước hết, chúng ta hãy tạo một bảng tính bằng cách sử dụng các lớp được tham chiếu đã được thảo luận trong các chương trước. Bằng cách làm theo chương trước, hãy tạo một sổ làm việc trước và sau đó chúng ta có thể tiếp tục và tạo một trang tính.

Đoạn mã sau được sử dụng để tạo bảng tính.

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

Hàng trên bảng tính

Bảng tính có bố cục dạng lưới. Các hàng và cột được xác định bằng các tên cụ thể. Các cột được xác định bằng bảng chữ cái và hàng bằng số.

Đoạn mã sau được sử dụng để tạo một hàng.

XSSFRow row = spreadsheet.createRow((short)1);

Viết vào một bảng tính

Chúng ta hãy xem xét một ví dụ về dữ liệu nhân viên. Ở đây, dữ liệu nhân viên được đưa ra dưới dạng bảng.

Id trống Tên trống Chỉ định
Tp01 Gopal Giám đốc kỹ thuật
TP02 Manisha Trình đọc bằng chứng
Tp03 Masthan Người viết kỹ thuật
Tp04 Hài lòng Người viết kỹ thuật
Tp05 Krishna Người viết kỹ thuật

Đoạn mã sau được sử dụng để ghi dữ liệu trên vào một bảng tính.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

      //Create blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

      //Create row object
      XSSFRow row;

      //This data needs to be written (Object[])
      Map < String, Object[] > empinfo = 
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
      
      //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

      //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

Lưu mã Java ở trên dưới dạng Writesheet.java, sau đó biên dịch và chạy nó từ dấu nhắc lệnh như sau:

$javac Writesheet.java $java Writesheet

Nó sẽ biên dịch và thực thi để tạo một tệp Excel có tên Writesheet.xlsx trong thư mục hiện tại của bạn và bạn sẽ nhận được kết quả sau trong dấu nhắc lệnh.

Writesheet.xlsx written successfully

Các Writesheet.xlsx tệp trông như sau.

Đọc từ Bảng tính

Chúng ta hãy xem xét tệp excel ở trên có tên Writesheet.xslxlàm đầu vào. Quan sát đoạn mã sau; nó được sử dụng để đọc dữ liệu từ bảng tính.

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.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
      
      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();
      
      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();
         
         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            
            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

Hãy để chúng tôi giữ mã trên trong Readsheet.java tệp, sau đó biên dịch và chạy nó từ dấu nhắc lệnh như sau:

$javac Readsheet.java $java Readsheet

Nếu môi trường hệ thống của bạn được cấu hình với thư viện POI, nó sẽ biên dịch và thực thi để tạo ra kết quả sau trong dấu nhắc lệnh.

EMP ID   EMP NAME       DESIGNATION 
 tp01     Gopal       Technical Manager 
 tp02     Manisha     Proof Reader 
 tp03     Masthan     Technical Writer 
 tp04     Satish      Technical Writer 
 tp05     Krishna     Technical Writer

Bất kỳ dữ liệu nào bạn nhập vào bảng tính luôn được lưu trữ trong một ô. Chúng tôi sử dụng nhãn của các hàng và cột để xác định một ô. Chương này mô tả cách thao tác dữ liệu trong các ô trong bảng tính bằng lập trình Java.

Tạo một ô

Bạn cần tạo một hàng trước khi tạo một ô. Một hàng không là gì ngoài một tập hợp các ô.

Đoạn mã sau được sử dụng để tạo ô.

//create new workbook
XSSFWorkbook workbook = new XSSFWorkbook(); 

//create spreadsheet with a name
XSSFSheet spreadsheet = workbook.createSheet("new sheet");

//create first row on a created spreadsheet
XSSFRow row = spreadsheet.createRow(0);

//create first cell on created row
XSSFCell cell = row.createCell(0);

Các loại tế bào

Loại ô chỉ định liệu một ô có thể chứa chuỗi, giá trị số hoặc công thức hay không. Một ô chuỗi không thể chứa các giá trị số và một ô số không thể chứa chuỗi. Dưới đây là các loại ô, giá trị của chúng và cú pháp kiểu.

Loại giá trị ô Nhập cú pháp
Giá trị ô trống XSSFCell.CELL_TYPE_BLANK
Giá trị ô Boolean XSSFCell.CELL.TYPE_BOOLEAN
Giá trị ô lỗi XSSFCell.CELL_TYPE_ERROR
Giá trị ô số XSSFCell.CELL_TYPE_NUMERIC
Giá trị ô chuỗi XSSFCell.CELL_TYPE_STRING

Đoạn mã sau được sử dụng để tạo các loại ô khác nhau trong bảng tính.

import java.io.File;
import java.io.FileOutputStream;

import java.util.Date;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TypesofCells {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cell types");
      
      XSSFRow row = spreadsheet.createRow((short) 2);
      row.createCell(0).setCellValue("Type of Cell");
      row.createCell(1).setCellValue("cell value");
      
      row = spreadsheet.createRow((short) 3);
      row.createCell(0).setCellValue("set cell type BLANK");
      row.createCell(1);
      
      row = spreadsheet.createRow((short) 4);
      row.createCell(0).setCellValue("set cell type BOOLEAN");
      row.createCell(1).setCellValue(true);
      
      row = spreadsheet.createRow((short) 5);
      row.createCell(0).setCellValue("set cell type ERROR");
      row.createCell(1).setCellValue(XSSFCell.CELL_TYPE_ERROR );
      
      row = spreadsheet.createRow((short) 6);
      row.createCell(0).setCellValue("set cell type date");
      row.createCell(1).setCellValue(new Date());
      
      row = spreadsheet.createRow((short) 7);
      row.createCell(0).setCellValue("set cell type numeric");
      row.createCell(1).setCellValue(20 );
      
      row = spreadsheet.createRow((short) 8);
      row.createCell(0).setCellValue("set cell type string");
      row.createCell(1).setCellValue("A String");
      
      FileOutputStream out = new FileOutputStream(new File("typesofcells.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("typesofcells.xlsx written successfully");
   }
}

Lưu đoạn mã trên vào một tệp có tên TypesofCells.java, biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac TypesofCells.java $java TypesofCells

Nếu hệ thống của bạn được cấu hình với thư viện POI, thì nó sẽ biên dịch và thực thi để tạo một tệp Excel có tên typesofcells.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau.

typesofcells.xlsx written successfully

Các typesofcells.xlsx tệp trông như sau.

Kiểu dáng ô

Tại đây, bạn có thể học cách định dạng ô và áp dụng các kiểu khác nhau như hợp nhất các ô liền kề, thêm đường viền, đặt căn chỉnh ô và tô màu.

Đoạn mã sau được sử dụng để áp dụng các kiểu khác nhau cho các ô bằng lập trình Java.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CellStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("cellstyle");
      XSSFRow row = spreadsheet.createRow((short) 1);
      row.setHeight((short) 800);
      XSSFCell cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("test of merging");

      //MEARGING CELLS 
      //this statement for merging cells

      spreadsheet.addMergedRegion(
         new CellRangeAddress(
            1, //first row (0-based)
            1, //last row (0-based)
            1, //first column (0-based)
            4 //last column (0-based)
         )
      );
      
      //CELL Alignment
      row = spreadsheet.createRow(5); 
      cell = (XSSFCell) row.createCell(0);
      row.setHeight((short) 800);
      
      // Top Left alignment 
      XSSFCellStyle style1 = workbook.createCellStyle();
      spreadsheet.setColumnWidth(0, 8000);
      style1.setAlignment(XSSFCellStyle.ALIGN_LEFT);
      style1.setVerticalAlignment(XSSFCellStyle.VERTICAL_TOP);
      cell.setCellValue("Top Left");
      cell.setCellStyle(style1);
      row = spreadsheet.createRow(6); 
      cell = (XSSFCell) row.createCell(1);
      row.setHeight((short) 800);
      
      // Center Align Cell Contents 
      XSSFCellStyle style2 = workbook.createCellStyle();
      style2.setAlignment(XSSFCellStyle.ALIGN_CENTER);
      style2.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
      cell.setCellValue("Center Aligned"); 
      cell.setCellStyle(style2);
      row = spreadsheet.createRow(7); 
      cell = (XSSFCell) row.createCell(2);
      row.setHeight((short) 800);
      
      // Bottom Right alignment 
      XSSFCellStyle style3 = workbook.createCellStyle();
      style3.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
      style3.setVerticalAlignment(XSSFCellStyle.VERTICAL_BOTTOM);
      cell.setCellValue("Bottom Right");
      cell.setCellStyle(style3);
      row = spreadsheet.createRow(8);
      cell = (XSSFCell) row.createCell(3);
      
      // Justified Alignment 
      XSSFCellStyle style4 = workbook.createCellStyle();
      style4.setAlignment(XSSFCellStyle.ALIGN_JUSTIFY);
      style4.setVerticalAlignment(XSSFCellStyle.VERTICAL_JUSTIFY);
      cell.setCellValue("Contents are Justified in Alignment"); 
      cell.setCellStyle(style4);
      
      //CELL BORDER
      row = spreadsheet.createRow((short) 10);
      row.setHeight((short) 800);
      cell = (XSSFCell) row.createCell((short) 1);
      cell.setCellValue("BORDER");
      
      XSSFCellStyle style5 = workbook.createCellStyle();
      style5.setBorderBottom(XSSFCellStyle.BORDER_THICK);
      style5.setBottomBorderColor(IndexedColors.BLUE.getIndex());
      style5.setBorderLeft(XSSFCellStyle.BORDER_DOUBLE);
      style5.setLeftBorderColor(IndexedColors.GREEN.getIndex());
      style5.setBorderRight(XSSFCellStyle.BORDER_HAIR);
      style5.setRightBorderColor(IndexedColors.RED.getIndex());
      style5.setBorderTop(XSSFCellStyle.BIG_SPOTS);
      style5.setTopBorderColor(IndexedColors.CORAL.getIndex());
      cell.setCellStyle(style5);
      
      //Fill Colors
      //background color
      row = spreadsheet.createRow((short) 10 );
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style6 = workbook.createCellStyle();
      style6.setFillBackgroundColor(HSSFColor.LEMON_CHIFFON.index );
      style6.setFillPattern(XSSFCellStyle.LESS_DOTS);
      style6.setAlignment(XSSFCellStyle.ALIGN_FILL);
      spreadsheet.setColumnWidth(1,8000);
      cell.setCellValue("FILL BACKGROUNG/FILL PATTERN");
      cell.setCellStyle(style6);
      
      //Foreground color
      row = spreadsheet.createRow((short) 12);
      cell = (XSSFCell) row.createCell((short) 1);
      
      XSSFCellStyle style7 = workbook.createCellStyle();
      style7.setFillForegroundColor(HSSFColor.BLUE.index);
      style7.setFillPattern( XSSFCellStyle.LESS_DOTS);
      style7.setAlignment(XSSFCellStyle.ALIGN_FILL);
      cell.setCellValue("FILL FOREGROUND/FILL PATTERN");
      cell.setCellStyle(style7);

      FileOutputStream out = new FileOutputStream(new File("cellstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("cellstyle.xlsx written successfully");
   }
}

Lưu đoạn mã trên vào một tệp có tên CellStyle.java, biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac CellStyle.java $java CellStyle

Nó sẽ tạo một tệp Excel có tên cellstyle.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau.

cellstyle.xlsx written successfully

Tệp cellstyle.xlsx trông như sau.

Chương này giải thích cách đặt các phông chữ khác nhau, áp dụng kiểu và hiển thị văn bản theo các góc hướng khác nhau trong bảng tính Excel.

Mỗi hệ thống đều đi kèm với một bộ sưu tập phông chữ khổng lồ như Arial, Impact, Times New Roman, v.v. Bộ sưu tập cũng có thể được cập nhật với các phông chữ mới, nếu cần. Tương tự, có nhiều kiểu khác nhau trong đó phông chữ có thể được hiển thị, ví dụ: in đậm, in nghiêng, gạch dưới, gạch ngang, v.v.

Phông chữ và Kiểu phông chữ

Đoạn mã sau được sử dụng để áp dụng một phông chữ và kiểu cụ thể cho nội dung của một ô.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class FontStyle {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Fontstyle");
      XSSFRow row = spreadsheet.createRow(2);

      //Create a new font and alter it.
      XSSFFont font = workbook.createFont();
      font.setFontHeightInPoints((short) 30);
      font.setFontName("IMPACT");
      font.setItalic(true);
      font.setColor(HSSFColor.BRIGHT_GREEN.index);

      //Set font into style
      XSSFCellStyle style = workbook.createCellStyle();
      style.setFont(font);

      // Create a cell with a value and set style to it.
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("Font Style");
      cell.setCellStyle(style);
      
      FileOutputStream out = new FileOutputStream(new File("fontstyle.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fontstyle.xlsx written successfully");
   }
}

Hãy để chúng tôi lưu mã trên vào một tệp có tên FontStyle.java. Biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac FontStyle.java $java FontStyle

Nó tạo một tệp Excel có tên fontstyle.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau trên dấu nhắc lệnh.

fontstyle.xlsx written successfully

Các fontstyle.xlsx tệp trông như sau.

Văn bản chỉ đạo

Tại đây, bạn có thể tìm hiểu cách đặt hướng văn bản theo các góc độ khác nhau. Thông thường nội dung ô được hiển thị theo chiều ngang, từ trái sang phải và ở góc 00; tuy nhiên, bạn có thể sử dụng mã sau để xoay hướng văn bản, nếu cần.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TextDirection {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Text direction");
      XSSFRow row = spreadsheet.createRow(2);
      XSSFCellStyle myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 0);
      XSSFCell cell = row.createCell(1);
      cell.setCellValue("0D angle");
      cell.setCellStyle(myStyle);

      //30 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 30);
      cell = row.createCell(3);
      cell.setCellValue("30D angle");
      cell.setCellStyle(myStyle);

      //90 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 90);
      cell = row.createCell(5);
      cell.setCellValue("90D angle");
      cell.setCellStyle(myStyle);

      //120 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 120);
      cell = row.createCell(7);
      cell.setCellValue("120D angle");
      cell.setCellStyle(myStyle);

      //270 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 270);
      cell = row.createCell(9);
      cell.setCellValue("270D angle");
      cell.setCellStyle(myStyle);

      //360 degrees
      myStyle = workbook.createCellStyle();
      myStyle.setRotation((short) 360);
      cell = row.createCell(12);
      cell.setCellValue("360D angle");
      cell.setCellStyle(myStyle);
      
      FileOutputStream out = new FileOutputStream(new File("textdirection.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("textdirection.xlsx written successfully");
   }
}

Giữ mã trên trong TextDirectin.java , sau đó biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac TextDirection.java $java TextDirection

Nó sẽ biên dịch và thực thi để tạo một tệp Excel có tên textdirection.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau trên dấu nhắc lệnh.

textdirection.xlsx written successfully

Các textdirection.xlsx tệp trông như sau.

Chương này sẽ đưa bạn qua quá trình áp dụng các công thức khác nhau trên các ô bằng lập trình Java. Mục đích cơ bản của ứng dụng Excel là duy trì dữ liệu số bằng cách áp dụng các công thức trên đó.

Trong một công thức, chúng tôi chuyển các giá trị động hoặc vị trí của các giá trị trong trang tính Excel. Khi thực hiện công thức này, bạn sẽ nhận được kết quả mong muốn. Bảng sau liệt kê một số công thức cơ bản thường được sử dụng trong Excel.

Hoạt động Cú pháp
Thêm nhiều số = SUM (Loc1: Locn) or = SUM (n1, n2,)
Đếm = COUNT (Loc1: Locn) or = COUNT (n1, n2,)
Lũy thừa của hai số = POWER (Loc1, Loc2) or = POWER (số, công suất)
Tối đa nhiều số = MAX (Loc1: Locn) or = MAX (n1, n2,)
Sản phẩm = SẢN PHẨM (Loc1: Locn) or = SẢN PHẨM (n1, n2,)
yếu tố = SỰ THẬT (Locn) or = FACT (số)
Số tuyệt đối = ABS (Locn) or = ABS (số)
Cuộc hẹn hôm nay = HÔM NAY ()
Chuyển đổi chữ thường = LOWER (Locn) or = LOWER (văn bản)
Căn bậc hai = SQRT (locn) or = SQRT (số)

Đoạn mã sau được sử dụng để thêm công thức vào một ô và thực thi nó.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Formula {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("formula");
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell = row.createCell(1);
      
      cell.setCellValue("A = ");
      cell = row.createCell(2);
      cell.setCellValue(2);
      row = spreadsheet.createRow(2);
      cell = row.createCell(1);
      cell.setCellValue("B = ");
      cell = row.createCell(2);
      cell.setCellValue(4);
      row = spreadsheet.createRow(3);
      cell = row.createCell(1);
      cell.setCellValue("Total = ");
      cell = row.createCell(2);
      
      // Create SUM formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SUM(C2:C3)");
      cell = row.createCell(3);
      cell.setCellValue("SUM(C2:C3)");
      row = spreadsheet.createRow(4);
      cell = row.createCell(1);
      cell.setCellValue("POWER =");
      cell=row.createCell(2);
      
      // Create POWER formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("POWER(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("POWER(C2,C3)");
      row = spreadsheet.createRow(5);
      cell = row.createCell(1);
      cell.setCellValue("MAX = ");
      cell = row.createCell(2);
      
      // Create MAX formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("MAX(C2,C3)");
      cell = row.createCell(3);
      cell.setCellValue("MAX(C2,C3)");
      row = spreadsheet.createRow(6);
      cell = row.createCell(1);
      cell.setCellValue("FACT = ");
      cell = row.createCell(2);
      
      // Create FACT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("FACT(C3)");
      cell = row.createCell(3);
      cell.setCellValue("FACT(C3)");
      row = spreadsheet.createRow(7);
      cell = row.createCell(1);
      cell.setCellValue("SQRT = ");
      cell = row.createCell(2);
      
      // Create SQRT formula
      cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);
      cell.setCellFormula("SQRT(C5)");
      cell = row.createCell(3);
      cell.setCellValue("SQRT(C5)");
      workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
      FileOutputStream out = new FileOutputStream(new File("formula.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("fromula.xlsx written successfully");
   }
}

Lưu mã trên dưới dạng Formula.java và sau đó biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac Formula.java $java Formula

Nó sẽ tạo một tệp Excel có tên formula.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau trên dấu nhắc lệnh.

fromula.xlsx written successfully

Các formula.xlsx tệp trông như sau.

Chương này giải thích cách thêm siêu liên kết vào nội dung trong ô. Thông thường, siêu liên kết được sử dụng để truy cập vào bất kỳ URL web, email hoặc tệp bên ngoài nào.

Đoạn mã sau đây cho thấy cách tạo siêu liên kết trên ô.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class HyperlinkEX {
   public static void main(String[] args) throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Hyperlinks");
      XSSFCell cell;
      CreationHelper createHelper = workbook.getCreationHelper();
      XSSFCellStyle hlinkstyle = workbook.createCellStyle();
      XSSFFont hlinkfont = workbook.createFont();
      hlinkfont.setUnderline(XSSFFont.U_SINGLE);
      hlinkfont.setColor(HSSFColor.BLUE.index);
      hlinkstyle.setFont(hlinkfont);

      //URL Link
      cell = spreadsheet.createRow(1).createCell((short) 1);
      cell.setCellValue("URL Link");
      XSSFHyperlink link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
      link.setAddress("http://www.tutorialspoint.com/");
      cell.setHyperlink((XSSFHyperlink) link);
      cell.setCellStyle(hlinkstyle);

      //Hyperlink to a file in the current directory
      cell = spreadsheet.createRow(2).createCell((short) 1);
      cell.setCellValue("File Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_FILE);
      link.setAddress("cellstyle.xlsx");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);

      //e-mail link
      cell = spreadsheet.createRow(3).createCell((short) 1);
      cell.setCellValue("Email Link");
      link = (XSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
      link.setAddress("mailto:[email protected]?" + "subject = Hyperlink");
      cell.setHyperlink(link);
      cell.setCellStyle(hlinkstyle);
      
      FileOutputStream out = new FileOutputStream(new File("hyperlink.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("hyperlink.xlsx written successfully");
   }
}

Lưu mã trên dưới dạng HyperlinkEX.java. Biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac HyperlinkEX.java $java HyperlinkEX

Nó sẽ tạo một tệp Excel có tên hyperlink.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau trên dấu nhắc lệnh.

hyperlink.xlsx written successfully

Các hyperlink.xlsx tệp trông như sau.

Chương này giải thích cách đặt vùng in trên bảng tính. Vùng in thông thường là từ trái trên xuống dưới cùng bên phải trên bảng tính Excel. Khu vực in có thể được tùy chỉnh theo yêu cầu của bạn. Nó có nghĩa là bạn có thể in một phạm vi ô cụ thể từ toàn bộ bảng tính, tùy chỉnh kích thước giấy, in nội dung với các đường lưới được bật, v.v.

Đoạn mã sau được sử dụng để thiết lập vùng in trên bảng tính.

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class PrintArea {
   public static void main(String[] args)throws Exception {
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("Print Area");

      //set print area with indexes
      workbook.setPrintArea(
         0, //sheet index
         0, //start column
         5, //end column
         0, //start row
         5 //end row
      );
      
      //set paper size
      spreadsheet.getPrintSetup().setPaperSize(XSSFPrintSetup.A4_PAPERSIZE);
      
      //set display grid lines or not
      spreadsheet.setDisplayGridlines(true);
      
      //set print grid lines or not
      spreadsheet.setPrintGridlines(true);
      
      FileOutputStream out = new FileOutputStream(new File("printarea.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("printarea.xlsx written successfully"); 
   }
}

Hãy để chúng tôi lưu mã trên dưới dạng PrintArea.java. Biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac PrintArea.java $java PrintArea

Nó sẽ tạo ra một tệp có tên printarea.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau trên dấu nhắc lệnh.

printarea.xlsx written successfully

Trong đoạn mã trên, chúng tôi chưa thêm bất kỳ giá trị ô nào. Vì thếprintarea.xlsxlà một tệp trống. Nhưng bạn có thể quan sát trong hình sau rằng bản xem trước khi in hiển thị vùng in với các đường lưới.

Chương này giải thích cách thư viện POI tương tác với cơ sở dữ liệu. Với sự trợ giúp của JDBC, bạn có thể lấy dữ liệu từ cơ sở dữ liệu và chèn dữ liệu đó vào bảng tính bằng thư viện POI. Chúng ta hãy xem xét cơ sở dữ liệu MySQL cho các hoạt động SQL.

Viết vào Excel từ Cơ sở dữ liệu

Hãy giả sử bảng dữ liệu nhân viên sau được gọi là emp_tbl sẽ được truy xuất từ ​​cơ sở dữ liệu MySQL test.

ID EMP EMP NAME DEG TIỀN LƯƠNG CHẾT
1201 Gopal Giám đốc kỹ thuật 45000 IT
1202 Manisha Trình đọc bằng chứng 45000 Thử nghiệm
1203 Masthanvali Người viết kỹ thuật 45000 IT
1204 Kiran Hr quản trị viên 40000 Nhân sự
1205 Kranthi Quản trị viên Op 30000 quản trị viên

Sử dụng mã sau để truy xuất dữ liệu từ cơ sở dữ liệu và chèn dữ liệu tương tự vào bảng tính.

import java.io.File;
import java.io.FileOutputStream;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelDatabase {
   public static void main(String[] args) throws Exception {
      Class.forName("com.mysql.jdbc.Driver");
      Connection connect = DriverManager.getConnection( 
         "jdbc:mysql://localhost:3306/test" , 
         "root" , 
         "root"
      );
      
      Statement statement = connect.createStatement();
      ResultSet resultSet = statement.executeQuery("select * from emp_tbl");
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("employe db");
      
      XSSFRow row = spreadsheet.createRow(1);
      XSSFCell cell;
      cell = row.createCell(1);
      cell.setCellValue("EMP ID");
      cell = row.createCell(2);
      cell.setCellValue("EMP NAME");
      cell = row.createCell(3);
      cell.setCellValue("DEG");
      cell = row.createCell(4);
      cell.setCellValue("SALARY");
      cell = row.createCell(5);
      cell.setCellValue("DEPT");
      int i = 2;

      while(resultSet.next()) {
         row = spreadsheet.createRow(i);
         cell = row.createCell(1);
         cell.setCellValue(resultSet.getInt("eid"));
         cell = row.createCell(2);
         cell.setCellValue(resultSet.getString("ename"));
         cell = row.createCell(3);
         cell.setCellValue(resultSet.getString("deg"));
         cell = row.createCell(4);
         cell.setCellValue(resultSet.getString("salary"));
         cell = row.createCell(5);
         cell.setCellValue(resultSet.getString("dept"));
         i++;
      }

      FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("exceldatabase.xlsx written successfully");
   }
}

Hãy để chúng tôi lưu mã trên dưới dạng ExcelDatabase.java. Biên dịch và thực thi nó từ dấu nhắc lệnh như sau.

$javac ExcelDatabase.java $java ExcelDatabase

Nó sẽ tạo một tệp Excel có tên exceldatabase.xlsx trong thư mục hiện tại của bạn và hiển thị kết quả sau trên dấu nhắc lệnh.

exceldatabase.xlsx written successfully

Các exceldatabase.xlsx tệp trông như sau.