자바에서 Excel 시트 값을 나타내는 좋은 방법
-
21-08-2019 - |
문제
아래 형식의 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];
문자열 대신 객체가 될 수 있습니다.
제휴하지 않습니다 StackOverflow