我想让我的程序从顶部到底部读取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列。< / p>
我实际上已经在Python中完成了这个,我考虑过使用Jython,但是,我找不到任何关于将python模块导入Jython代码的文档。我相信XSSF apache-poi是我在java中处理xlsx文件的唯一方法。
相关页面: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
但我只能找到处理行和单元格的代码,而不是列。我想要遍历列。有没有代码可以解决这个问题?
答案 0 :(得分:1)
您可以使用当前的API本身轻松完成此操作:
for (int columnIndex = 0; columnIndex<3; columnIndex++){
for (int rowIndex = 0; rowIndex<3; rowIndex++){
XSSFCell cell = worksheet.getRow(rowIndex).getCell(columnIndex);
}
}