質問

ると考えているexcelシートに以下のフォーマット:

年齢
Foo 29
バー 27

今では、読みたいこれらの値を利用施設HSSF)として処理します。何が最善の方法。

注意のことではありませんがオブジェクトの人に、わけの価値があるとexcelのシートを任意の(できない場合があり人の名前です。そこで、私を利用する必要があっHashMapれに値です。場合は複数行であり、まことにありがとうございます。?

役に立ちましたか?

解決

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

他のヒント

フォーマットが定義されている場合、それらすべてのフィールドをaccomodatesクラスを作成します。

のフォーマットが定義されていない場合、ExcelツーDOM変換から行-Sの周りに、またはリスト、あるいはDOMを渡します。あなたは選択肢がありません。私はPOIのネイティブ行とセルオブジェクトに固執お勧めします。

あなたは、複数のキーの値を持っている場合は、[はい、あなたはマップを使用することはできません。そして、私は、この問題のために、いくつかのビルドでクラスを見つけることができませんでした。あなたは、ラッパーのいくつかの種類を記述してみてください。

:あなたはスピードを気にしない場合は、このような単純な2次元配列を使います
String[][] filter = new String[initial width][initial height];

は、文字列の代わりにオブジェクトことができる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top