Frage

Ich habe ein excel-Blatt in below format:

person Alter
Foo 29
Bar 27

Ich will jetzt Lesen Sie diese Werte (mit POI-HSSF) und verarbeiten diese.Was ist der beste Weg, dies zu tun?

Beachten Sie, dass ich nicht ein Objekt in meiner Anwendung, weil die Werte, die im excel-sheet ist beliebig (d.h.es kann nicht die person sein, die Namen und Alter).Also, ich brauche zu verwenden, einige ein bisschen HashMap zum speichern dieser Werte.Im Fall, dass mehrere Zeilen, ist es gut, eine Liste haben !?

War es hilfreich?

Lösung

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

Andere Tipps

Wenn das format definiert ist, eine Klasse, gliedert sich in all diesen Bereichen.

Wenn das format nicht definiert ist, pass-Row-en rund oder Listen, oder auch DOM von excel-dom transformation.Sie haben keine Wahl.Ich würde empfehlen, nur stick zu POI ' s native Zeile und Zelle Objekte.

Ja, Sie können nicht anzeigen, wenn Sie mehrere Schlüssel-Werte.Und ich habe nicht, dass einige build-in-class für dieses Problem.Sie können versuchen, schreiben Sie eine Art wrapper.Wenn Sie don ' T care von Geschwindigkeit verwenden einfache 2D-array wie folgt:

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

es kann sein Objekt anstelle von String;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top