Verificar a quantidade de exibição de um mesmo item e somar a quantidade para gravar

Olá pessoal gostaria de uma ajuda se possível por favor.
estou com uma planilha de produtos onde um sistema terceirizado exporta um arquivo xls
de produtos, porem o que acontece é que a exportação, manda um arquivo onde cada vez que estiver o produto
ele repete o produto e a quantidade sempre é um, alguém poderia me ajudar, e sabe se consigo criar um sistema
que lê a planilha xls e através do código contar a quantidade e que esta na planilha este é exemplo da minha planilha
ex
id código descrição quantidade
33 1313 Coca Cola 2L 1
34 1455 Pepsi 2L 1
35 1214 Guarana Antartica 1
36 1313 Coca Cola 2L 1
37 1313 Coca Cola 2L 1

observe que a descrição coca cola repete 3 vezes eu queria que aparecesse a descrição 1 unica vez
porem acrescentando a quantidade total de 3.

33 1313 Coca Cola 2L 3

alguém pode me ajudar?

É possível, procure pela biblioteca Apache POI, que você consegue manipular planilhas através dela.
Você leria o arquivo e colocaria em uma Collection e faria o tratamento…
Eu particularmente colocaria num HashMap onde a chave seria o código (ou até mesmo o objeto) e o valor seria a quantidade de vezes que ele aparece…
Depois com o mesmo Apache POI você poderia montar a planilha de saída.

Obrigado Lincoln vou pesquisar e ver como consigo, assim que eu conseguir posto o código.

Você teria um código de exemplo pra me mostrar?

Cara, fiz aqui um exemplo de como ler a planilha, jogar no HashMap e pegar as quantidades…

`

import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author Lincoln
 */
public class TestePOI {

    public static void main(String[] args) throws Exception {
        Map<Produto, Integer> produtos = new HashMap<Produto, Integer>();
        File planilha = new File("c:/Temp/planilha.xls");
        Closeable wb = null;
        //cria objeto para iteracao de linhas.
        Iterator<Row> iteradorLinhasPlanilha;
        try {
            //verifica qual a extensao da planilha para preencher o objetos workbook e sheet de maneira correta.
            if (planilha.getName().endsWith(".xlsx")) {
                //cria uma planilha completa com todas as abas.
                XSSFWorkbook workbook = new XSSFWorkbook(planilha);
                //recupera a primeira aba da planilha.
                XSSFSheet sheet = workbook.getSheetAt(0);
                //recupera o iterador de linhas da aba.
                iteradorLinhasPlanilha = sheet.iterator();
                //recupera o numero de linhas da aba.
                wb = workbook;
            } else {
                //cria uma planilha completa com todas as abas.
                org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(planilha);
                //recupera a primeira aba da planilha.
                org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
                //recupera o iterador de linhas da aba.
                iteradorLinhasPlanilha = sheet.iterator();
                //recupera o numero de linhas da aba.
                wb = workbook;
            }
            while (iteradorLinhasPlanilha.hasNext()) {
                Row row = iteradorLinhasPlanilha.next();
                //se for a linha de cabeçalho pula.
                if (row.getRowNum() == 0) {
                    continue;
                }
                //cria um novo produto
                Produto produto = new Produto();

                //pega cada celula da linha
                Cell cell = row.getCell(0);
                produto.setId((int) cell.getNumericCellValue());

                cell = row.getCell(1);
                produto.setCodigo((int) cell.getNumericCellValue());

                cell = row.getCell(2);
                produto.setDescricao(cell.getStringCellValue());

                //preenche o hashmap
                if (produtos.containsKey(produto)) {
                    produtos.put(produto, produtos.get(produto) + 1);
                } else {
                    produtos.put(produto, 1);
                }
            }
        } catch (Exception ex) {
            Logger.getLogger(TestePOI.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            if (wb != null) {
                try {
                    wb.close();
                } catch (IOException ex) {
                    Logger.getLogger(TestePOI.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

        //percorre o hashmap
        for (Produto produto : produtos.keySet()) {
            System.out.println("Produto: " + produto.getDescricao() + "\nQuantidade: " + produtos.get(produto) + "\n");
        }
    }

}

class Produto {

    private int id;
    private int codigo;
    private String descricao;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getCodigo() {
        return codigo;
    }

    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public int hashCode() {
        return this.codigo;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Produto) {
            Produto produto = (Produto) obj;
            return this.codigo == produto.codigo;
        }
        return false;
    }

}

`

Não está muito bonito, se eu fosse você refatorava em métodos menores e organizava mais o código… mas é um exemplo funcional…

A planilha que fiz aqui segue este layout:

e a saída é a seguinte:
Produto: Coca Cola 2L
Quantidade: 1

Produto: Pepsi 2L
Quantidade: 2

Acredito que ficou faltando você criar uma planilha de saída a partir das informações do Map.

muito obrigado Lincoln