1

以下の形式のExcelシートがあると考えてください。

人の 年齢
Foo29Bar
27

次に、これらの値を(POI HSSFを使用して)読み取り、処理する必要があります。それを行うための最良の方法は何ですか?

私のアプリケーションにはObjectPersonが含まれていないことに注意してください。これは、Excelシートに含まれる可能性のある値が任意であるためです(つまり、個人の名前や年齢ではない可能性があります)。したがって、これらの値を格納するために、ある種のHashMapを使用する必要があります。複数行の場合、リストがあるといいですか!?

4

3 に答える 3

4
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;
    }
}
于 2009-05-13T14:01:49.303 に答える
0

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

形式が定義されていない場合は、行を渡したり、リストを渡したり、ExcelからDOMへの変換からDOMを渡したりします。あなたは選択肢がありません。POIのネイティブのRowオブジェクトとCellオブジェクトに固執することをお勧めします。

于 2009-05-13T11:19:30.163 に答える
0

はい、複数のキー値がある場合はマップを使用できません。そして、私はこの問題のためのいくつかの組み込みクラスを見つけられませんでした。ある種のラッパーを書いてみることができます。速度を気にしない場合は、次のような単純な2D配列を使用してください。

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

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

于 2009-05-13T11:54:21.353 に答える