java - 使用 Java 程序从 Excel 文件中获取第 X 列

标签 java excel

我有一个 Excel 工作表,其中有近 150 列。我正在编写一个实用程序,其中将获取列名称为 X 的列。在另一个线程中,我看到了如何读取 XL 工作簿和工作表。已编写以下代码。

        HSSFSheet sheet = workbook.getSheetAt(0);
        Iterator rows = sheet.rowIterator();


        while (rows.hasNext()) 
        {
            HSSFRow row = (HSSFRow) rows.next();
            Iterator cells = row.cellIterator();

            List data = new ArrayList();
            while (cells.hasNext()) 
            {
                HSSFCell cell = (HSSFCell) cells.next();
                data.add(cell);
            }

            sheetData.add(data);
        }
    } 

那么如何从给定列名称的 XL 工作表中获取确切的列..?

最佳答案

Apache POI API HSSFSheet 是基于行的,您需要通过迭代提取列数据,下面的链接可能会回答您的问题:

Extracting data in spreadsheet columns in Apache POI API

修改代码以搜索第一个工作表第 1 行中的字符串

package projectTest.test;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

public class Poi {


    public static void main(String[] args) throws Exception {  
    //test file is located in your project path         
    FileInputStream fileIn = new FileInputStream("test.xls");
    //read file 
    POIFSFileSystem fs = new POIFSFileSystem(fileIn); 
    HSSFWorkbook filename = new HSSFWorkbook(fs);
    //open sheet 0 which is first sheet of your worksheet
    HSSFSheet sheet = filename.getSheetAt(0);

    //we will search for column index containing string "Your Column Name" in the row 0 (which is first row of a worksheet
    String columnWanted = "Your Column Name";
    Integer columnNo = null;
    //output all not null values to the list
    List<Cell> cells = new ArrayList<Cell>();

    Row firstRow = sheet.getRow(0);

    for(Cell cell:firstRow){
        if (cell.getStringCellValue().equals(columnWanted)){
            columnNo = cell.getColumnIndex();
        }
    }


    if (columnNo != null){
    for (Row row : sheet) {
       Cell c = row.getCell(columnNo);
       if (c == null || c.getCellType() == Cell.CELL_TYPE_BLANK) {
          // Nothing in the cell in this row, skip it
       } else {
          cells.add(c);
       }
    }
    }else{
        System.out.println("could not find column " + columnWanted + " in first row of " + fileIn.toString());
    }

    }
}

关于java - 使用 Java 程序从 Excel 文件中获取第 X 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761024/

相关文章:

Excel - 使用 IF 和 OR

vba - 使用VBA设置系统日期和时间

java - FFMPEG 使用字符串设置 -ss 和 -to

java - 我需要在游戏中显示分数,该分数可以随着玩家获得分数而更新

Excel VBA::在循环中查找函数

excel - 索引匹配匹配查询 Excel 2013

Excel 多条件排名

java - 在 digester3 中替代 DigesterLoader.createDigester(url)

java - 使用 inputString 获取枚举值的方法

java - 按下时更改按钮复合绘图