- Apache POI 教程
- Apache POI - 首頁
- Apache POI - 概述
- Apache POI - Java Excel API
- Apache POI - 環境配置
- Apache POI - 核心類
- Apache POI - 工作簿
- Apache POI - 電子表格
- Apache POI - 單元格
- Apache POI - 字型
- Apache POI - 公式
- Apache POI - 超連結
- Apache POI - 列印區域
- Apache POI - 資料庫
- Apache POI 資源
- Apache POI - 常見問題解答
- Apache POI - 快速指南
- Apache POI - 有用資源
- Apache POI - 討論區
Apache POI - 電子表格
本章解釋如何使用 Java 建立電子表格並對其進行操作。電子表格是 Excel 檔案中的一個頁面;它包含具有特定名稱的行和列。
完成本章後,您將能夠建立電子表格並在其上執行讀取操作。
建立電子表格
首先,讓我們使用前面章節中討論的參考類建立一個電子表格。按照上一章的內容,先建立一個工作簿,然後我們可以繼續建立工作表。
以下程式碼片段用於建立電子表格。
//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");
電子表格中的行
電子表格具有網格佈局。行和列用特定名稱標識。列用字母標識,行用數字標識。
以下程式碼片段用於建立一行。
XSSFRow row = spreadsheet.createRow((short)1);
寫入電子表格
讓我們考慮一個員工資料示例。此處員工資料以表格形式給出。
| 員工ID | 員工姓名 | 職位 |
|---|---|---|
| Tp01 | Gopal | 技術經理 |
| TP02 | Manisha | 校對員 |
| Tp03 | Masthan | 技術撰寫人 |
| Tp04 | Satish | 技術撰寫人 |
| Tp05 | Krishna | 技術撰寫人 |
以下程式碼用於將上述資料寫入電子表格。
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");
}
}
將上述 Java 程式碼儲存為 **Writesheet.java**,然後從命令提示符編譯並執行它,如下所示:
$javac Writesheet.java $java Writesheet
它將編譯並執行以在當前目錄中生成名為 **Writesheet.xlsx** 的 Excel 檔案,您將在命令提示符中獲得以下輸出。
Writesheet.xlsx written successfully
**Writesheet.xlsx** 檔案如下所示:
從電子表格讀取
讓我們將上述名為 **Writesheet.xslx** 的 Excel 檔案作為輸入。觀察以下程式碼;它用於從電子表格讀取資料。
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 NUMERIC:
System.out.print(cell.getNumericCellValue() + " \t\t ");
break;
case STRING:
System.out.print(
cell.getStringCellValue() + " \t\t ");
break;
}
}
System.out.println();
}
fis.close();
}
}
讓我們將上述程式碼儲存在 **Readsheet.java** 檔案中,然後從命令提示符編譯並執行它,如下所示:
$javac Readsheet.java $java Readsheet
如果您的系統環境已配置 POI 庫,它將編譯並執行,並在命令提示符中生成以下輸出。
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
廣告