我有一个看起来像这样的 excel 电子表格:
+-----------------+--------+----------------------+
| Title | Value | Average Price List |
+-----------------+--------+----------------------+
| | | |
| Item 1 | 10 | 9.99 |
| Item 2 | 20 | 9.99 |
| Item 3 | 30 | 8.99 |
| Total Royalty A | | |
| | | |
+-----------------+--------+----------------------+
| Item 1 | 10 | 9.90 |
| Item 2 | 20 | 5.69 |
| Item 3 | 30 | 9.99 |
| Total Royalty B | | |
| | | |
+-----------------+--------+----------------------+
我想得到平均列的总值。但是,我需要使用“总版税 A ”和“总版税 B ”将总数分开;最终的意思是结果应该是这样的:
Total Royalty A = 10.99
Total Royalty B = 11.88
我使用了一个 HashMap,其中的键是来自“ Total Royalty B ”的“Total Royalty A ”。我在if 语句中的代码有问题:
if(totalCell.getCellType() == Cell.CELL_TYPE_STRING)
我认为的问题是标题下有一个空/空白单元格。我尝试使用不同的技术来跳过空单元格,但问题一直在该行发生。如果有人可以就如何解决这个问题给我任何建议,我将不胜感激。
这是应该处理执行上述说明的方法:
public HashMap monthlyAverageUnitsTotal (HSSFSheet sheet, int colAvgNum, int colTitle )
{
HashMap hm = new HashMap();
double sum = 0.0;
String key = null;
for(Row row : sheet)
{
Cell saleAverageCell = row.getCell(colAvgNum);
Cell totalCell = row.getCell(colTitle);
if(totalCell.getCellType() == Cell.CELL_TYPE_STRING)
{
String totalCellValue = totalCell.getStringCellValue().toString().trim();
if(totalCellValue.startsWith("Total Royalty"))
{
key = totalCell.getStringCellValue().toString().trim();
}
}
if(saleAverageCell.getCellType() == Cell.CELL_TYPE_NUMERIC)
{
double saleAverageCellValue = saleAverageCell.getNumericCellValue();
sum += saleAverageCellValue;
// put the element in the map
hm.put(key, sum);
// return the value of sum to 0
sum = 0.0;
}
}
return hm;
}