Apache POI - Bảng tính
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 tiếp 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 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