Apache POI – 在Excel中迭代列(XSSF)

我想让我的程序从顶部到底部阅读一个excel列,而不是从左到右,就像现在正在做的那样。 不幸的是,在文档中找不到任何让我这样做的东西。

我有一个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 

我在第2列写了一些值(使用XLWT),如下所示:

  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是我可以用java处理xlsx文件的唯一方法。

相关页面: 如何在java中做excel的单元迭代

 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

但我只能find处理行和单元格的代码,而不是列。 我想遍历列尽pipe。 有没有任何代码来处理这个?

您可以使用当前的API本身很容易地做到这一点:

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