在Java中表示Excel表格值的好方法

考虑我有一个以下格式的Excel表:

年龄
富29
酒吧27

现在我想读取这些值(使用POI HSSF)并且必须处理它们。 什么是最好的方式来做到这一点?

请注意,我的应用程序中没有Object Person,因为可能会出现在Excel表中的值是任意的(即,可能不是人名和年龄)。 所以,我需要使用一些HashMap来存储这些值。 在多行的情况下,有一个List!是好事吗?

public class Grid { private Row headerColumns; private List<Row> dataRows; public Grid() { dataRows = new LinkedList<Row>(); } public Grid(int rowCount) { dataRows = new ArrayList<Row>(rowCount); } public void addHeaderRow(List<String> headers) { this.headerColumns = new Row(headers); } public void addDataRow(List<String> data) { this.dataRows.add( new Row(data) ); } public List<Row> getAllData() { List<Row> data = new ArrayList<Row>(1+dataRows.size()); data.add(this.headerColumns); data.addAll(dataRows); return data; } public Row getHeaderColumns() { return headerColumns; } public List<Row> getDataRows() { return dataRows; } } class Row { private List<String> data; public Row(List<String> data) { this.data = data; } public void addColumn(String columnData) { data.add(columnData); } public List<String> getData() { return data; } } 

如果格式已定义,请创build一个可容纳所有这些字段的类。

如果格式没有定义,则传递Row -s或者List,甚至是从excel-to-dom转换中传递DOM。 你没有select。 我build议只坚持POI的本地行和单元对象。

是的,如果您有多个键值,则无法使用地图。 而我没有find这个问题的一些内置类。 你可以尝试写一些包装。 如果你不关心速度使用这样简单的二维数组:

 String[][] filter = new String[initial width][initial height]; 

它可以是Object而不是String;