我需要帮助将列值插入ArrayList<String[]>
结构中。如果我有这张Excel表格:
我使用两种数据结构。列名称为HashMap
,值为ArrayList<String[]>
。我能够很好地获得列名,但无法弄清楚如何获取值。
这是我的代码:
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++;
}
我不确定如何将值添加到此行的ArrayList
:
values.add(j, //cellVal_at_valueIndex);
如果我只是放cellVal
,那么它就不会正确地与HashMap
中的列映射关联。基本上,我希望它看起来像这样:
HashMap: ArrayList:
------------------ --------------------
Key | Value String | Index
------------------ --------------------
id 0 1 0
number 1 2 1
time 2 ... ...
从这里开始,我可以做values.get(columnNames.get("id"))[valueIndex];
我这样做是因为每个都可以有任意数量的列和值。使用get方法从特定列获取值也更容易。
如何在String数组中添加值?我觉得我错过了一些简单的事情。提前谢谢!
答案 0 :(得分:0)
尝试类似:
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC)
{
System.out.print(cell.getNumericCellValue());
values.add(cell.getNumericCellValue());
}
else if (cell.getCellType() == Cell.CELL_TYPE_STRING)
{
System.out.print(cell.getRichStringCellValue());
values.add(cell.getRichStringCellValue());
}
else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN)
{
System.out.print(cell.getBooleanCellValue());
values.add(cell.getBooleanCellValue());
}
有关详细信息,请查看Getting the cell contents链接。