2016-01-07 2 views
2

новый для java здесь. Я работаю на код, который читает Excel файлов (если смотреть на ячейки в столбцах), а затем пишет что-то, что выглядит, как в следующих таблицах:Apache POI - JAVA - итерация по столбцам в excel

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

 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 на самом деле, и я рассматривал использование 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 Python { 
    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 i = 0; i < 9999; i++) { 
      XSSFRow row = worksheet.getRow(i); 
      if(row == null) { 
       //iterates over rows 
      } 


     for (int j = 0; j < 30; j++) { 
      XSSFCell cell = row.getCell(j); 

       if(cell == null) { 
       //iterates over cells 

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

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

+0

Проверьте этот исходный код здесь: https://sourceforge.net/p/automatic-report-generator/code/HEAD/tree/trunk/xls -порожденная/SRC/главная/Java/сеть/SF/ennahdi/автоматический/отчет/генератор/XLS/двигатель/XLSEngine.java –

ответ

3

Просто итерацию строк и взять необходимую ячейку:

int columnIndex = 3; 
for (int rowIndex = 0; rowIndex<3; rowIndex++){ 
    Row row = CellUtil.getRow(rowIndex, sheet); 
    Cell cell = CellUtil.getCell(row, columnIndex); 
}