Apache POI用法
一、Apache POI是什么
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。
二、POI结构
HSSF - 提供读写Microsoft Excel XLS格式档案的功能
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能
HWPF - 提供读写Microsoft Word DOC格式档案的功能
HSLF - 提供读写Microsoft PowerPoint格式档案的功能
HDGF - 提供读Microsoft Visio格式档案的功能
HPBF - 提供读Microsoft Publisher格式档案的功能
HSMF - 提供读Microsoft Outlook格式档案的功能
三、POI操作Excel
3.1从Excel读取数据
//通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。
//创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook("D:\\hello.xlsx");
//获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
XSSFSheet sheet = workbook.getSheetAt(0);
//遍历工作表获得行对象
for (Row row : sheet) {
//遍历行对象获取单元格对象
for (Cell cell : row) {
//获得单元格中的值
String value = cell.getStringCellValue();
System.out.println(value);
}
}
workbook.close();
POI操作Excel表格封装了几个核心对象:
XSSFWorkbook:工作簿
XSSFSheet:工作表
Row:行
Cell:单元格
3.2向Excel文件写入数据
使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelWriter {
public static void main(String[] args) {
// 创建一个新的XSSFWorkbook对象,代表整个Excel工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
try {
// 创建一个新的工作表
XSSFSheet sheet = workbook.createSheet("Sheet1");
// 创建第一行
XSSFRow row = sheet.createRow(0);
// 创建第一行的第一个单元格,并设置值
XSSFCell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
// 创建第二行
XSSFRow row2 = sheet.createRow(1);
// 创建第二行的第一个单元格,并设置值
XSSFCell cell2 = row2.createCell(0);
cell2.setCellValue("这是第二行");
// 将工作簿写入到文件中
try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
workbook.write(outputStream);
}
System.out.println("Excel文件已成功创建并写入数据");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
// 关闭workbook
if (workbook != null) {
workbook.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
四、POI操作Word
4.1读取 Word 文件
Apache POI 也可以用于读取 Word 文件的内容。
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.FileInputStream;
import java.io.IOException;
public class WordReader {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.docx");
XWPFDocument document = new XWPFDocument(fis)) {
XWPFWordExtractor extractor = new XWPFWordExtractor(document);
String text = extractor.getText();
System.out.println(text);
} catch (IOException e) {
e.printStackTrace();
}
}
}
4.2写入 Word 文件
写入 Word 文件也可以通过 Apache POI 来实现。
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class WordWriter {
public static void main(String[] args) {
// 创建文档
XWPFDocument document = new XWPFDocument();
// 创建段落
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("这是一个示例文档。");
// 写入文件
try (FileOutputStream fos = new FileOutputStream("output.docx")) {
document.write(fos);
} catch (IOException e) {
e.printStackTrace();
}
}
}
五、深入学习
如果想要深入学习 Apache POI,可以参考官方文档:https://poi.apache.org/