如何使用Apache POI读取所有单元格的值?

13
我想使用Apache POI读取Excel表格中的所有单元格值,并将其存储到一维字符串数组中。是否可以逐行读取Excel数据并从每个单元格提取值?
请帮我解决这个问题。
谢谢
2个回答

13

import java.io.FileInputStream;
import java.util.Iterator;
import java.util.Vector;

import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;

这段代码是一个Java程序,用于读取Excel文件并将其存储在向量中。

要使用此程序,请确保已经导入了Apache POI库。程序的主要方法是readExcelFile和printCellDataToConsole。

readExcelFile方法从指定的文件名创建输入流,并使用POIFSFileSystem对象和HSSFWorkbook对象来读取工作簿中的第一个表格。然后,它使用迭代器遍历每一行,并将单元格存储在向量中。

printCellDataToConsole方法遍历向量并打印每个单元格的值到控制台。


8

有一份Java World的文档,完美使用POI展示了如何实现此功能。

例子:

String fileName = "C:/MyExcelFile.xls"; // file we are interested in
POIFSFileSystem fileSystem = new POIFSFileSystem(new FileInputStream(fileName));
HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
HSSFSheet sheet = workbook.getSheetAt(0); //Get first Excel Sheet

//STRING and NUMERIC are now Enums from org.apache.poi.ss.usermodel
for (Row row : sheet) {
        for (Cell cell: row) {
            switch (cell.getCellTypeEnum()) {
                case STRING:
                    System.out.print(cell.getStringCellValue() + "\t\t\t");
                    break;
                case NUMERIC:
                    System.out.print(cell.getNumericCellValue() + "\t\t\t");
                    break;
                default:
            }
        }
        System.out.println("");
    }

@Buhade Sindi CELL_TYPE_NUMERIC、CELL_TYPE_STRING 和 getCellType() 这些函数都已经过时,请进行必要的更改。 - Shubham Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接