2016-01-16 1 views
0

Я хочу, чтобы моя программа читала колонку excel сверху вниз, а не слева направо, как это делается прямо сейчас. К сожалению, я не могу найти ничего в документации, которая позволяет мне это делать.Apache POI - Итерирование по столбцам в excel (XSSF)

У меня есть файл первенствовать, который выглядит следующим образом:

 col1  col2 col3 col4 
     ----------------------------- 
row1 | 2,3,1 _  1  w 
row2 | 3,2,7 _  2  x 
row3 | _  _  3  y 
row4 | 4,9  _  4  z 

Я пишу некоторые значения (используя XLWT) в колонке 2, которые выглядят так:

 col1  col2 col3 col4 
     ----------------------------- 
row1 | 2,3,1 x,y,w  1  w 
row2 | 3,2,7 y,x  2  x 
row3 | _  _  3  y 
row4 | 4,9  z  4  z 

По существу, колонка 3 и столбец 1, и если ячейка (1,1) имеет значения, согласованные в столбце 3, значения столбца 4 (которые соответствуют столбцу 3) записываются в столбец 2.

Я сделал это в актуале Python y, и я рассматривал использование Jython, однако я не мог найти никаких документов по импорту модулей python в код Jython. Я считаю, что XSSF apache-poi - единственный способ разрешить работу с xlsx-файлами в java.

Соответствующая страница: How to do cell iteration of excel in java

import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.xssf.usermodel.*; 

public class Expy { 
    public static void main(String[] args) { 
     try { 
     FileInputStream file = new FileInputStream(new File("C:\\Users\\...\\Bioactives25s.xlsx")); 
     XSSFWorkbook workbook = new XSSFWorkbook(file); 
     XSSFSheet worksheet = workbook.getSheetAt(0); 
     for (int rowIndex = 0; rowIndex<3; rowIndex++){ 
      XSSFRow row = worksheet.getRow(rowIndex); 
      for (int columnIndex = 0; columnIndex<3; columnIndex++){ 
       XSSFCell cell = row.getCell(columnIndex); 
       System.out.print(cell);.getCell(j); 
       //iterates over cells 

Опять же, в основном, ищут способ для перебора значений столбцов (сверху вниз). Я просмотрел документацию: http://poi.apache.org/spreadsheet/quick-guide.html#Iterator

Но я мог найти код для работы со строками и ячейками, а не с столбцами. Тем не менее, я хотел бы перебирать столбцы. Есть ли какой-нибудь код, чтобы справиться с этим?

+2

колонка таблицы является количество клеток с той же позиции в последовательных строках. Пример: столбец 'C: C' является' C1: Cn' является '.getRow (0) .getCell (2)', '.getRow (1) .getCell (2)', '.getRow (2) .getCell (2) ', ...' .getRow (n) .getCell (2) '. –

+0

Не задавайте один и тот же вопрос дважды! – Gagravarr

ответ

1

Вы можете сделать это довольно легко, используя сам текущий API:

for (int columnIndex = 0; columnIndex<3; columnIndex++){ 
    for (int rowIndex = 0; rowIndex<3; rowIndex++){ 
     XSSFCell cell = worksheet.getRow(rowIndex).getCell(columnIndex); 
    } 
} 
+0

Вам нужно добавить нулевую проверку: строки могут быть «null», если у них никогда не было данных или стилей, помещенных в них – Gagravarr

 Смежные вопросы

  • Нет связанных вопросов^_^