10

我对java很陌生。我正在从 excel 创建 pList。我的 excel 文件包含多张工作表。我想遍历 excel 文件的所有工作表。这要怎么做?请帮忙。

4

3 回答 3

22
public static void main( String [] args ) {
    try {

        InputStream input = POIExample.class.getResourceAsStream( "qa.xls" );
        POIFSFileSystem fs = new POIFSFileSystem( input );
        HSSFWorkbook wb = new HSSFWorkbook(fs);


        for (int i = 0; i < wb.getNumberOfSheets(); i++) {
            HSSFSheet sheet = wb.getSheetAt(i);

            // Do your stuff        
        }

    } catch ( IOException ex ) {
        ex.printStackTrace();
    }
}
于 2013-01-14T09:52:55.367 回答
3

apache poi 文档中,我们看到还有一个可用的迭代器,我认为这是一个更清洁的解决方案:

Iterator<Sheet> sheetIterator = workbook.iterator();
while (sheetIterator.hasNext()) {
    Sheet sheet = sheetIterator.next();
}

根据您使用的工作簿类型(HSSF 或 XSSF),您可能需要执行额外的转换操作:

  • HSSF:POI 项目的 Excel '97(-2007) 文件格式的纯 Java 实现。

    HSSFSheet sheet = (HSSFSheet) sheetIterator.next();
    
  • XSSF:POI 项目的 Excel 2007 OOXML (.xlsx) 文件格式的纯 Java 实现。

    XSSFSheet sheet = (XSSFSheet) sheetIterator.next();
    
于 2017-07-28T14:33:58.983 回答
1

爪哇:

Workbook workbook = WorkbookFactory.create(file);
Iterator<Sheet> sheetIterator;
sheetIterator = workbook.sheetIterator();
while(sheetIterator.hasNext()){
    Sheet sheet = sheetIterator.next();
    out.println(sheet.getSheetName());
}

斯卡拉:

var iterator = workbook.sheetIterator(); while(iterator.hasNext){ var sheet = iterator.next println(sheet) }

于 2017-07-28T13:46:15.420 回答