Pregunta

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

persona edad
Foo 29
Barra 27

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

Tenga en cuenta que no tengo una Persona Objeto en mi aplicación, porque los valores que pueden venir en la hoja de Excel son arbitrarios (es decir,puede que no sea el nombre de la persona ni su edad).Entonces, necesito usar algún tipo de HashMap para almacenar estos valores.En caso de que haya varias filas, ¿es bueno tener una Lista?

¿Fue útil?

Solución

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

Otros consejos

Si se define el formato, hacer una clase que acoge todos esos campos.

Si no se define el formato, pasar Fila-s alrededor, o listas, o incluso de la transformación DOM-excel-a dom. No tienes elección. Me gustaría recomendar sólo se adhieren a la fila y celulares objetos nativos de PDI.

Sí, no se puede utilizar el mapa Si tiene múltiples valores clave. Y yo no he encontrado alguna clase build-in para este problema. Usted puede tratar de escribir una especie de envoltura. Si no se preocupan de uso sencillo velocidad de matriz 2D como esto:

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

puede ser objeto en lugar de cuerdas;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top