POI3.8组件研究(五)---excel文件内容抽取为文本
时间: 2024-01-22 22:03:53 浏览: 99
poi-读取Excel表格内容
对于将 Excel 文件内容抽取为文本,可以使用 Apache POI 库中的 HSSF 和 XSSF 两个类来实现。
HSSF(Horrible SpreadSheet Format)用于处理 Excel 97-2003 文件格式,即 .xls 文件;XSSF(XML SpreadSheet Format)则用于处理 Excel 2007 及以上版本的文件格式,即 .xlsx 文件。
下面是一个使用 HSSF 和 XSSF 分别读取 .xls 和 .xlsx 文件并将内容抽取为文本的示例代码:
```java
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelReader {
public static void main(String[] args) {
String fileName = "example.xlsx"; // Excel 文件名
Workbook workbook = null;
try {
FileInputStream fileInputStream = new FileInputStream(fileName);
if (fileName.endsWith(".xls")) {
workbook = new HSSFWorkbook(fileInputStream);
} else if (fileName.endsWith(".xlsx")) {
workbook = new XSSFWorkbook(fileInputStream);
}
Sheet sheet = workbook.getSheetAt(0); // 获取第一个 Sheet
int rowCount = sheet.getLastRowNum() + 1; // 获取行数
int colCount = sheet.getRow(0).getLastCellNum(); // 获取列数
for (int i = 0; i < rowCount; i++) {
for (int j = 0; j < colCount; j++) {
if (sheet.getRow(i).getCell(j) != null) {
sheet.getRow(i).getCell(j).setCellType(CellType.STRING); // 将单元格数据全部转换为字符串类型
System.out.print(sheet.getRow(i).getCell(j).getStringCellValue() + "\t"); // 输出单元格内容并用制表符分隔
}
}
System.out.println(); // 换行
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (workbook != null) {
try {
workbook.close(); // 关闭 Workbook
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
```
上述代码中,首先根据文件名的后缀选择使用 HSSF 或 XSSF 创建 Workbook 对象,然后获取第一个 Sheet,并分别获取行数和列数。接着使用两个 for 循环遍历所有单元格,并将单元格内容转换为字符串类型并输出,其中使用制表符分隔每个单元格内容,并在每行末尾换行输出。最后在 finally 块中关闭 Workbook 对象。
需要注意的是,本例中将所有单元格内容都转换为字符串类型输出,这是因为不同类型的单元格可能会有不同的输出方式。如果需要根据单元格类型进行不同的处理,可以使用 Cell 的 `getCellType()` 方法获取单元格类型,并根据不同类型进行不同处理。
阅读全文