Olá, estou fazendo uma classe que lê um XLS, quando eu leio Strings não tenho problema algum, porém quando eu tento ler numeros, int ou double, aparece uma data doida e dá erro, por que um int não suporta por exemplo “31/07/1983 00:00:00”
O excel é o seguinte, eu faço algumas movimentações (produtos) no sistema, e através do iReport, com Jasper Reports, eu gero um Excel, com todos os produtos, e ao lado uma coluna em branco para alguem digitar a quantidade e o valor de cada produto, depois que estiver tudo preenchido, faz o upload deste arquivo para inputação dos dados no sistema.
Até a parte do Upload está tudo as mil maravilhas, mas quando eu vou ler as quantidades, e os valores do Excel, vem uma data, quando leio a descrição dos produtos, a String vem perfeita!
Não vou postar o código inteiro por que está muito extenso, e está “quase” todo correto, vou colocar partes dele.
ArrayList cotacao = new ArrayList();
HSSFSheet sheet = wb.getSheetAt(0); // first sheet
HashMap mapeamento = obterMapeamentoCampos(acaoExecucao);
Integer valorItem;
Integer valorQuantidade;
Integer valorFamilia;
Integer valorMaterial;
Integer valorEspecificacao;
Integer valorQtDisponivel;
Integer valorCustoUnitario;
Integer valorCustoTotal;
int inicioDados = obterLinhaInicialRegistros(this.INCLUIR_PRODUTOS);
for (int i= inicioDados; i <= sheet.getLastRowNum(); i++){
//Obter cada registro
HSSFRow row = sheet.getRow(i);
/*
* Obter a posição das informações nas células.
*/
valorItem = obterPosicaoCampo(mapeamento, "Item");
valorQuantidade = obterPosicaoCampo(mapeamento, "Qtd");
valorFamilia = obterPosicaoCampo(mapeamento, "Familia");
valorMaterial = obterPosicaoCampo(mapeamento, "Material");
valorEspecificacao = obterPosicaoCampo(mapeamento, "Especificacao");
valorQtDisponivel = obterPosicaoCampo(mapeamento, "QtDisponivel");
valorCustoUnitario = obterPosicaoCampo(mapeamento, "CustoUnitario");
valorCustoTotal = obterPosicaoCampo(mapeamento, "CustoTotal");
/*
* Declaração das células que serão lidas.
*/
HSSFCell item = null;
HSSFCell quantidade = null;
HSSFCell familia = null;
HSSFCell material = null;
HSSFCell especificacao = null;
HSSFCell qtDisponivel = null;
HSSFCell custoUnitario = null;
HSSFCell custoTotal = null;
/*
* Ler o conteúdo das células
*/
if ( valorItem != null){
item = row.getCell ( valorItem.shortValue() );
}
if (valorQuantidade != null){
quantidade = row.getCell(valorQuantidade.shortValue());
}
if (valorFamilia != null){
familia = row.getCell(valorFamilia.shortValue());
}
if (valorMaterial != null){
material = row.getCell(valorMaterial.shortValue());
}
if (valorEspecificacao != null){
especificacao = row.getCell(valorEspecificacao.shortValue());
}
if (valorQtDisponivel != null){
qtDisponivel = row.getCell(valorQtDisponivel.shortValue());
}
if (valorCustoUnitario != null){
custoUnitario = row.getCell(valorCustoUnitario.shortValue());
}
if (valorCustoTotal != null){
custoTotal = row.getCell(valorCustoTotal.shortValue());
}
CotacaoMatOdontoExcelForm linha = new CotacaoMatOdontoExcelForm();
if(item != null){
converteToStringValue(item);
linha.setItem(Integer.parseInt(item.getStringCellValue().trim())); //a variavel item, esta retornando "01/01/1900 00:00:00", o certo seria 1
}
if(quantidade != null){
converteToStringValue(quantidade);
linha.setQtde(Integer.parseInt(quantidade.getStringCellValue().trim())); //a variavel qtDisponivel, esta retornando "08/01/1900 00:00:00", o certo seria 50
}
if(familia != null){
converteToStringValue(familia);
linha.setFamilia(familia.getStringCellValue().trim());
}
if(material != null){
converteToStringValue(material);
linha.setMaterial(material.getStringCellValue().trim());
}
if(especificacao != null){
converteToStringValue(especificacao);
linha.setEspecificacao(especificacao.getStringCellValue().trim());
}
if(qtDisponivel != null){
converteToStringValue(qtDisponivel);
linha.setQtDisponivel(Integer.parseInt(qtDisponivel.getStringCellValue().trim())); //a variavel qtDisponivel, esta retornando "31/12/1899 00:00:00", o certo seria 15
}
if(custoUnitario != null){
converteToStringValue(custoUnitario);
linha.setCustoUnitario(Double.parseDouble(custoUnitario.getStringCellValue().trim()));
}
if(custoTotal != null){
converteToStringValue(custoTotal);
linha.setCustoTotal(Double.parseDouble(custoTotal.getStringCellValue().trim()));
}
cotacao.add(linha);
}
return cotacao;
O que eu to fazendo de errado???