考虑到我有一个以下格式的 excel 表:
人 年龄Foo 29
Bar 27
现在我想读取这些值(使用 POI HSSF)并且必须处理它们。最好的方法是什么?
请注意,我的应用程序中没有对象人员,因为 excel 表中可能出现的值是任意的(即它可能不是人名和年龄)。所以,我需要使用某种 HashMap 来存储这些值。如果多行,有一个 List 好吗!?
考虑到我有一个以下格式的 excel 表:
人 年龄现在我想读取这些值(使用 POI HSSF)并且必须处理它们。最好的方法是什么?
请注意,我的应用程序中没有对象人员,因为 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;
}
}
如果定义了格式,请创建一个包含所有这些字段的类。
如果未定义格式,则传递行,或列表,甚至 DOM 从 excel 到 dom 转换。你没有选择。我建议只使用 POI 的原生 Row 和 Cell 对象。
是的,如果您有多个键值,则不能使用 map。而且我没有为这个问题找到一些内置类。您可以尝试编写某种包装器。如果您不关心速度,请使用如下简单的二维数组:
String[][] filter = new String[initial width][initial height];
它可以是 Object 而不是 String;