una buena forma de representar un valor de hoja de Excel en Java

Considere que tengo una hoja de Excel en el siguiente formatting:

persona edad
Foo 29
Bar 27

Ahora quiero leer estos valores (usando POI HSSF) y tengo que procesarlos. ¿Cuál es la mejor manera de hacer eso?

Tenga en count que no tengo un Object Person en mi aplicación, ya que los valores que pueden venir en la hoja de Excel son arbitrarios (es decir, puede no ser el nombre de la persona y la edad). Entonces, necesito usar algo de HashMap para almacenar estos valores. En caso de filas múltiples, ¿es bueno tener una 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; } } 

Si el formatting está definido, crea una class que acomode todos esos campos.

Si el formatting no está definido, pase Row-s around, o Lists, o incluso DOM desde la transformación de excel-to-dom. No tienes elección. Recomiendo simplemente adherirme a los objects Row y Cell nativos de POI.

Sí, no puedes usar el map si tienes múltiples valores key. Y no encontré ninguna class incorporada para este problema. Puedes intentar escribir algún tipo de envoltorio. Si no te importa la velocidad, utiliza un arreglo 2D simple como este:

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

puede ser Object en lugar de String;