一、简介
Apache POI是一个用于创建、读取和操作Microsoft Office格式文件的Java库。它支持的文件格式包括Excel、Word和PowerPoint等。通过Apache POI,我们可以轻松地读取、写入或修改Excel文件、Word文档等Microsoft Office格式文件。
Apache POI的核心API是HSSF(Horrible Spreadsheet Format)、XSSF(XML Spreadsheet Format)和SXSSF(Streaming Usermodel API)。它们支持不同的Excel格式文件,可以根据实际需求进行选择。另外,Apache POI还支持对word文档进行读写操作。下面将详细介绍如何使用Apache POI进行Office文档的操作。
二、读取Excel文件
对于读取Excel文件,Apache POI提供了HSSF和XSSF两个核心API。下面以HSSF为例进行介绍。
1. 读取Excel文件中的数据
public static void readExcelFile(String filePath) throws IOException {
FileInputStream fileInputStream = new FileInputStream(filePath);
Workbook workbook = new HSSFWorkbook(fileInputStream);
// 获取第一个sheet
Sheet sheet = workbook.getSheetAt(0);
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
System.out.print(cell.getStringCellValue() + "\t");
}
System.out.println();
}
fileInputStream.close();
}
上面的代码中,首先通过HSSFWorkbook类读取Excel文件,然后获取第一个sheet。接着,遍历每一行的每一个单元格,并输出其值。
2. 读取Excel文件中的特定数据
public static void readExcelFileWithCondition(String filePath, String condition) throws IOException {
FileInputStream fileInputStream = new FileInputStream(filePath);
Workbook workbook = new HSSFWorkbook(fileInputStream);
// 获取第一个sheet
Sheet sheet = workbook.getSheetAt(0);
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
if (cell.getStringCellValue().contains(condition)) {
System.out.println("找到特定数据:" + cell.getStringCellValue());
break;
}
}
}
fileInputStream.close();
}
上面的代码中,通过参数传入特定数据的条件,然后在读取Excel文件时进行判断,如果单元格中包含该条件,则输出该单元格的值。
三、写入Excel文件
对于写入Excel文件,Apache POI同样提供了HSSF和XSSF两个核心API。下面以HSSF为例进行介绍。
1. 写入Excel文件中的数据
public static void writeExcelFile(String filePath) throws IOException {
Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("sheet1");
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("姓名");
row.createCell(1).setCellValue("年龄");
row = sheet.createRow(1);
row.createCell(0).setCellValue("张三");
row.createCell(1).setCellValue(18);
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
workbook.write(fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
}
上面的代码中,首先创建一个HSSFWorkbook对象,然后创建一个名为"sheet1"的sheet。接着,创建第一行,并设置单元格的值。最后,将文件保存到指定路径下。
2. 写入Excel文件中的数据并设置样式
public static void writeExcelFileWithStyle(String filePath) throws IOException{
Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("sheet1");
// 创建样式
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 第一行
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("姓名");
cell.setCellStyle(cellStyle);
cell = row.createCell(1);
cell.setCellValue("年龄");
cell.setCellStyle(cellStyle);
// 数据行
row = sheet.createRow(1);
cell = row.createCell(0);
cell.setCellValue("张三");
cell = row.createCell(1);
cell.setCellValue(18);
// 保存文件
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
workbook.write(fileOutputStream);
fileOutputStream.flush();
fileOutputStream.close();
}
上面的代码中,首先创建一个HSSFWorkbook对象,然后创建一个名为"sheet1"的sheet。接着,创建样式并应用到第一行的单元格中。最后,将文件保存到指定路径下。
四、操作Word文档
除了Excel文件,Apache POI还支持对Word文档的读写操作。下面以读取Word文档为例进行介绍。
public static void readWordFile(String filePath) throws IOException {
FileInputStream fileInputStream = new FileInputStream(filePath);
XWPFDocument xwpfDocument = new XWPFDocument(fileInputStream);
List
paragraphs = xwpfDocument.getParagraphs();
for (XWPFParagraph paragraph : paragraphs) {
System.out.println(paragraph.getText());
}
fileInputStream.close();
}
上面的代码中,首先通过XWPFDocument类读取Word文件,然后获取所有段落,并输出每个段落的内容。
五、小结
通过本文的介绍,我们了解了Apache POI库的基本使用。可以看出,Apache POI大大简化了Office文档的操作,让Java程序员更加轻松地处理Excel、Word等文档。当然,Apache POI还提供了丰富的API,可以满足更加复杂的场景需求。希望本文能够帮助读者更好地掌握Apache POI的使用。