Получить значения из Excel с помощью POI

1

Я пытаюсь получить значения столбца для определенной строки в excel с помощью методов poi.

Я могу получить значения, но проблема в том, что я хочу значения только из второго столбца.

public static ArrayList<String> GetBusinessComponentList() throws IOException{


        String Tcname = "TC02_AggregateAutoByPassRO_CT";
        ArrayList<String> arrayListBusinessFlow ;   
        arrayListBusinessFlow = new ArrayList<String>();
        FileInputStream fileInput = new FileInputStream(oFile);
        wb = new HSSFWorkbook(fileInput);
        sheet = wb.getSheet("Business Flow");

        int rownr = findRow(sheet, Tcname);
            row = sheet.getRow(rownr);  
                                          for (Cell cell : row) {
                                        String arr = cell.getStringCellValue();                  
                      arrayListBusinessFlow.add(arr);         
                    }                               
                  return arrayListBusinessFlow;
        }
    private static int findRow(HSSFSheet sheet, String cellContent){              

        for (Row row : sheet) {
            for (Cell cell : row) {
                if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) {
                        return row.getRowNum();  
                    }
                }
            }
        }               
        return 0;
    }

}

ВЫВОД:

[TC02_AggregateAutoByPassRO_CT, 
StrategicUINewBusiness.Login, 
StrategicUINewBusiness.CustomerSearch, 
StrategicUINewBusiness.NamedInsured, 
StrategicUINewBusiness.InsuranceScoreByPass, 
StrategicUINewBusiness.VehiclePage, 
StrategicUINewBusiness.DriverPage, 
StrategicUINewBusiness.ViolationPage, 
StrategicUINewBusiness.UnderwritingPage, 
StrategicUINewBusiness.CoveragePage, 
StrategicUINewBusiness.Portfolio, 
StrategicUINewBusiness.BillingPage, 
StrategicUINewBusiness.FinalSalePage, 
StrategicUINewBusiness.PolicyConfirmation, , , ]

Но я не хочу, чтобы мое имя тестового случая, когда я получаю.

Пожалуйста, помогите мне, какие изменения мне нужно сделать. благодарю!

  • 0
    Ваш код ищет во всех ячейках найденные номера строк. если вам нужен только второй столбец в строках, вы можете указать индекс столбца.
  • 0
    Нет, мне нужны все значения столбцов для конкретной строки. Просто я нахожу строку, основанную на имени тестового примера. Поэтому, когда я получаю, я не хочу, чтобы мое имя теста.
Показать ещё 1 комментарий
Теги:
apache-poi

2 ответа

0
Лучший ответ

В настоящее время код, который вы используете для итерации по ячейкам, возвращает только ячейки с контентом или стилем и пропускает полностью пустые. Вам нужно перейти на один из других способов итерации по ячейкам, чтобы вы могли контролировать его, чтобы читать со второго столбца вперед.

Если вы посмотрите документацию Apache POI на итерацию по строкам и ячейкам, вы увидите намного больше подробностей о двух основных способах повторения.

Для вашего случая вам нужно что-то вроде:

// We want to read from the 2nd column onwards, zero based
int firstColumn = 1;

// Always fetch at least 4 columns
int MY_MINIMUM_COLUMN_COUNT = 5;
// Work out the last column to go to
int lastColumn = Math.max(r.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT);

// To format cells into strings
DataFormatter df = new DataFormatter();

// Iterate over the cells
for (int cn = firstColumn; cn < lastColumn; cn++) {
    Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
    if (c == null) {
        // The spreadsheet is empty in this cell
    } else {
        // Do something useful with the cell contents

        // eg get the cells value as a string
        String cellAsString = df.formatCellValue(c);
    }
}
0

Использовать Cell cell=row.getCell(1); а также вы можете использовать sheet.getLastRowNum() чтобы получить номер последней строки на листе.

for (int i=0;i<=row.getLastCellNum();i++) {
      if (i!=1){
        //your stuff
     }
}
  • 0
    Благодарю за ваш ответ. все, что я хотел, это игнорировать значение из столбца 1 (т. е. имя тестового случая или содержание элемента, которое я сравниваю) Поэтому, пожалуйста, дайте мне знать, что я должен делать. Также "for (Cell cell: row)" я получаю ошибку, если я использую row.getcell (1).
  • 0
    простите меня, я новичок в Java
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню