Получать столбцы из файлов Excel с помощью Apache POI?

Чтобы сделать некоторый статистический анализ, мне нужно извлечь значения в столбце листа Excel. Я использую Apache POI-пакет для чтения из файлов Excel, и он отлично работает, когда нужно перебирать строки. Однако я ничего не нашел о получении столбцов ни в API (текст ссылки), ни через поиск в Google.

Как мне нужно получить значения max и min разных столбцов и генерировать случайные числа, используя эти значения, поэтому, не поднимая отдельные столбцы, единственный вариант - перебирать строки и столбцы, чтобы получить значения и сравнить один за другим, что звучит не так быстро.

Любые идеи о том, как решить эту проблему?

Спасибо,

Ответы

Ответ 1

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

Ваш код, вероятно, хочет быть чем-то вроде:

List<Double> values = new ArrayList<Double>();
for(Row r : sheet) {
   Cell c = r.getCell(columnNumber);
   if(c != null) {
      if(c.getCellType() == Cell.CELL_TYPE_NUMERIC) {
         valuesadd(c.getNumericCellValue());
      } else if(c.getCellType() == Cell.CELL_TYPE_FORMULA && c.getCachedFormulaResultType() == Cell.CELL_TYPE_NUMERIC) {
         valuesadd(c.getNumericCellValue());
      }
   }
}

Это даст вам все значения числовых ячеек в этом столбце.

Ответ 2

Я знаю, что это старый вопрос, но у меня была та же проблема, что и представленная, и мне пришлось решать ее по-другому.

Мой код не мог быть легко адаптирован и приобрел бы много ненужной сложности. Поэтому я решил изменить лист excel вместо обратных столбцов и строк, как описано здесь: (http://www.howtogeek.com/howto/12366/)

Вы также можете инвертировать его с помощью VBA, как показано здесь:

Преобразование строки со столбцами данных в столбец с несколькими строками в Excel 2007

Надеюсь, что это поможет кому-то там.