- 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
广告