使用Apache POI从Excel文件中获取列?

为了做一些统计分析,我需要提取一个Excel表格中的值。 我一直在使用Apache POI包来从Excel文件中读取数据,当需要遍历行时,它可以正常工作。 但是我找不到在API( 链接文本 )中也没有通过谷歌search获取列的任何内容。

由于我需要获取不同列的最大值和最小值,并使用这些值生成随机数,所以在不拾取单个列的情况下,唯一的select是遍历行和列来获取值并逐一比较,时间一直很有效。

任何想法如何解决这个问题?

谢谢,

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()); } } } 

然后,这将给你在该列中的所有数字单元格值。

我知道这是一个古老的问题,但我提出了相同的问题,必须以不同的方式解决。

我的代码不容易适应,并会获得许多不必要的复杂性。 所以我决定改变Excel表格,而不是像这里解释的那样反转列和行:( http://www.howtogeek.com/howto/12366/

你也可以通过VBA来反转它,如下所示:

将具有数据列的行转换为Excel 2007中具有多行的列

希望它能帮助那里的人