buon modo per rappresentare un foglio di excel valore in Java
-
21-08-2019 - |
Domanda
Considera che ho un foglio di excel in seguito formato:
persona etàPippo 29
Bar 27
Ora voglio leggere questi valori (utilizzando i punti di interesse HSSF) e hanno per la loro elaborazione.Qual è il modo migliore per farlo?
Nota che io non sono un Oggetto Persona nella mia applicazione, perché i valori che possono venire da un foglio di excel è arbitrario (cioèpotrebbe non essere la persona che il nome e l'età).Così, ho bisogno di usare una specie di HashMap per memorizzare questi valori.In caso di più righe, è bene avere un Elenco !?
Soluzione
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;
}
}
Altri suggerimenti
Se il formato è definito, fare una classe che ospita tutti i campi.
Se il formato non è definita passa Riga-s o Elenchi, o anche DOM da excel-di-dom trasformazione.Non avete scelta.Mi raccomando solo bastone per poi nativo di Riga e di oggetti Cella.
Sì, è possibile utilizzare la mappa se si dispone di più i valori di chiave.E non riesco a trovare alcune build-in classe per questo problema.Si può provare a scrivere qualche tipo di involucro.Se non si cura di velocità di utilizzare una semplice matrice 2D come questo:
String[][] filter = new String[initial width][initial height];
può essere Oggetto invece di Stringa;