Я нахожусь есть таблицы Excel, которая выглядит примерно так:Apache POI: Сохранение ключа и суммы в карте
+-----------------+--------+----------------------+
| 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 | | |
| | | |
+-----------------+--------+----------------------+
Я хочу, чтобы получить общее значение средней колонки. Однако мне нужно, чтобы общее количество было разделено с помощью «Всего роялти-фри, 0» и «Всего В0 '; то есть, в конце концов результат должен быть что-то вроде этого:
Total Royalty A = 10.99
Total Royalty B = 11.88
Я использовал HashMap, в котором ключи являются «Итого гонорар» от «Всего Безвозмездная B». У меня возникли проблемы с моим кодом в , если оператор:
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;
}
Спасибо, что решила проблема! – lv10
@ lv10 Добро пожаловать :) –