Supponendo che tu abbia bisogno di una soluzione generica, in cui il programma non sia legato a una struttura di colonne specifica in fase di esecuzione, puoi utilizzare ArrayList
di righe, dove ogni riga è una matrice di stringhe String[]
. Avrai bisogno di un ulteriore HashTable<String,int>
per memorizzare la mappatura del nome della colonna all'indice della colonna (probabilmente un HashMap
funzionerà). Quindi se hai
HashTable<String,int> columnMapping;
ArrayList<String[]> tableValues;
puoi implementare getColumnValue
di
String getColumnValue(String columnName, int indexOfValue)
{
return tableValues.get(columnMapping.get(columnName))[indexOfValue];
}
Si può prendere in considerazione l'aggiunta di qualche gestione degli errori qui, un codice che determina i nomi delle colonne e un altro codice che legge le righe excel negli array String
con una voce per colonna. Se hai bisogno dei valori in un modulo tipizzato, considera di sostituire le String[]
di% di Object[]
e di memorizzare il contenuto della cella come oggetti di tipo String
, Integer
, Double
o Date
. Puoi anche implementare una classe speciale CellContent
e memorizzare le tue righe come CellContent[]
matrici, se hai requisiti specifici e la necessità di implementare comportamenti o metodi specifici per un elemento di contenuto.
Si noti che si tratta di una scetch approssimativa di una soluzione generica. Si può modificare questo e creare diverse varianti, per requisiti più specifici.
Se hai bisogno di una variante generica less , poiché il tuo programma si aspetta una struttura di colonne specifica, la soluzione migliore è probabilmente quella di creare una classe DTO specifica MyRowType
per contenere i valori specifici di una riga, e usa una variabile come
ArrayList<MyRowType> tableValues
per la memorizzazione del contenuto della tabella.