Ich brauche Hilfe Einfügen von Spaltenwerten in eine ArrayList<String[]>
Struktur. Wenn ich diese Excel-Blatt haben:Apache POI Spaltenwerte in ArrayList einfügen <String[]>
ich zwei Datenstrukturen. Eine HashMap
für die Spaltennamen und die ArrayList<String[]>
für die Werte. Ich bin in der Lage, die Spaltennamen in Ordnung zu bekommen, kann aber nicht herausfinden, wie man die Werte bekommt.
Hier ist mein Code:
Map<String, Integer> columnNames = new HashMap<String, Integer>();
List<String[]> values = new ArrayList<String[]>();
DataFormatter dataFormat = new DataFormatter();
FormulaEvaluator eval = workbook.getCreationHelper().createFormulaEvaluator();
Row row;
int valueIndex = 0;
for(int i = 0; i < sheet.getLastRowNum(); i++) {
row = (Row) sheet.getRow(i);
Iterator<Cell> cells = row.cellIterator();
// Read each cell in the row
for(int j = 0; cells.hasNext(); j++) {
Cell cell = cells.next();
// Column Headers
if(cell.getRowIndex() == 0) {
eval.evaluate(cell);
String cellVal = dataFormat.formatCellValue(cell, eval);
columnNames.put(cellVal, j);
// Column values
} else {
eval.evaluate(cell);
String cellVal = dataFormat.formatCellValue(cell, eval);
// What do I write here?
values.add(j, //cellVal_at_valueIndex);
}
}
// Go to next index for values (down 1 row)
valueIndex++;
}
Ich bin nicht sicher, wie der Wert der ArrayList
auf dieser Zeile hinzufügen:
values.add(j, //cellVal_at_valueIndex);
Wenn ich gerade cellVal
dann wird es nicht korrelieren zu den Spaltenzuordnungen in der HashMap
korrekt. Bascially, ich will es so aussehen:
HashMap: ArrayList:
------------------ --------------------
Key | Value String | Index
------------------ --------------------
id 0 1 0
number 1 2 1
time 2 ... ...
Von hier aus kann ich etwas tun, wie values.get(columnNames.get("id"))[valueIndex];
Ich bin es so zu tun, weil es eine Anzahl von Spalten und Werten für jeden sein kann. Es ist auch einfacher, mit einer get-Methode einen Wert aus einer bestimmten Spalte zu erhalten.
Wie kann ich die Werte im Array String hinzufügen? Ich fühle mich, als würde ich etwas Einfaches vermissen. Danke im Voraus!