문제

아래 형식의 Excel 시트를 고려하십시오.

사람 나이
Foo 29
막대 27

이제이 값 (POI HSSF 사용)을 읽고 처리해야합니다. 그렇게하는 가장 좋은 방법은 무엇입니까?

내 신청서에 객체 사람이없고, Excel 시트에 나올 수있는 값이 임의적이기 때문에 (즉, 사람의 이름과 나이가 아닐 수도 있음). 따라서 이러한 값을 저장하려면 몇 가지 해시 맵을 사용해야합니다. 여러 행의 경우 목록을 갖는 것이 좋습니다!?

도움이 되었습니까?

해결책

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

다른 팁

형식이 정의되면 모든 필드를 수용하는 클래스를 만드십시오.

형식이 정의되지 않은 경우, Excel-to-Dom Transformation에서 Row-S 주변 또는 목록 또는 Dom. 넌 선택권이 없어. POI의 기본 행과 셀 객체를 고수하는 것이 좋습니다.

예, 여러 키 값이있는 경우 맵을 사용할 수 없습니다. 이 문제에 대한 빌드 인 클래스를 찾지 못했습니다. 당신은 일종의 래퍼를 쓸 수 있습니다. 속도를 신경 쓰지 않으면 다음과 같은 간단한 2D 배열을 사용하십시오.

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

문자열 대신 객체가 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top