Estou enfrentando o seguinte problema, estou lendo um arquivo excel e pegando a data, neste formato por exemplo: 14/02/1992
ao pegar a data no Java através do comando cell.ToString() ele me retorna 14-FEV-1992, porém eu precisava que ele retornasse do jeito que está na planilha excel.
Vocês tem ideia de como mudar esse retorno no excel quando eu pegar a celula pelo Java? Ou um comando do java mesmo pra pegar o próprio conteúdo da celula sem pegar o que “está por trás”?
E a solução não está em dar um replace apenas para trocar o "-’ por “/” pois o usuário estipula o formato que a data vem de acordo como inseriu no excel e eu dou um SimpleDateFormat de acordo com esse formato que o usuário passa (de acordo com o que ele colocou no excel), mas o excel passa-me outro formato de data.
Você precisa tratar o dado como Date mesmo, desta forma:
DateCellvencimento=(DateCell)celula;
L
limaaq
Fala Diego Adriano, beleza?
o comando DataCell pelo que procurei é um comando do jxl e eu estou usando a POI pra ler o arquivo excel, sabe se algum dos comandos da POI tem a mesma utilidade desse comando DataCell?
Pelo que procurei achei esses HSSFDataFormat; HSSFDataFormatter; HSSFDateUtil; mas todos davam erro de acordo com o código que você divulgou ai em cima.
Mas mesmo assim obrigado pela ajuda! :!:
Diego_Adriano
Bão tb e por ae ?
Pô … esqueci de dizer esse detalhe …rs
Então, eu ate usa o Apache POI mas estava tendo muita dificuldade exatamente com isso, então acabei fazer com o JXL, assim obtive o resultado mais facilmente …
Caso vc queira eu posto o código ai pra te ajudar …
Abraços
L
limaaq
Putz, ai é fogo!
Mas saca só, tenho aqui a parte do código que pego a celula do excel por índice, e depois pego a informação contida nela.
int coluna = campo.getOrdem() ;
HSSFCell cell = row.getCell(coluna);
só que ai ele me retorna a data que está "por trás" do excel, como descrevi no primeiro post.
vou converter a data para o banco MySQL
Bem cara, pode ser o problema da biblioteca que esta usando, no meu caso eu pego com o DateCell e já coloco no Obj para inserir no banco …
Quanto a inserir não precisa formatar, o SQL vai fzr isso sozinho para vc …
Diego_Adriano
Acho que assim vai te ajudar mais..
importjava.io.File;importjava.io.IOException;importjava.text.ParseException;importjava.util.ArrayList;importjava.util.List;importbr.com.controleboleto.model.LancaAntigos;importbr.com.controleboleto.utilitarios.Utilitarios;importjxl.Cell;importjxl.DateCell;importjxl.Sheet;importjxl.Workbook;importjxl.read.biff.BiffException;publicclassImportaExcel{Utilitariosutil=newUtilitarios();publicList<LancaAntigos>lista()throwsBiffException,IOException,ParseException{List<LancaAntigos>lancamentos=newArrayList<LancaAntigos>();/** * Carrega a planilha */Workbookworkbook=Workbook.getWorkbook(newFile("C:/Resumo.xls"));/** * Aqui é feito o controle de qual aba do xls * será realiza a leitura dos dados */Sheetsheet=workbook.getSheet(0);/** * Numero de linhas com dados do xls */intlinhas=sheet.getRows();//System.out.println("Linhas : " + linhas);for(intlinha=0;linha<1000;linha++){LancaAntigoslancamento=newLancaAntigos();for(intcoluna=0;coluna<=7;coluna++){Cellcelula=sheet.getCell(coluna,linha);if(coluna==0){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setNumBanco(null);}else{lancamento.setNumBanco(celula.getContents().toString());}}elseif(coluna==1){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setDatavencimento(null);}else{DateCellvencimento=(DateCell)celula;lancamento.setDatavencimento(vencimento.getDate());}}elseif(coluna==2){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setCodCliente(0);}else{lancamento.setCodCliente(Integer.parseInt(celula.getContents().toString()));}}elseif(coluna==3){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setNomeCliente(null);}else{lancamento.setNomeCliente(celula.getContents().toString().toUpperCase());}}elseif(coluna==4){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setUnidade(0);}else{lancamento.setUnidade(Integer.parseInt(celula.getContents().toString()));}}elseif(coluna==5){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setDataentrega(null);lancamento.setDataemissao(null);}else{DateCellentrega=(DateCell)celula;lancamento.setDataentrega(entrega.getDate());lancamento.setDataemissao(entrega.getDate());}}elseif(coluna==6){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setStatus(null);}else{lancamento.setStatus(celula.getContents().toString());}}elseif(coluna==7){if(celula.getContents().equals("")||celula.getContents()==null){lancamento.setObservacao(null);}else{lancamento.setObservacao(celula.getContents().toString().toUpperCase());}}System.out.println("Conteúdo da Linha "+linha+" Coluna "+coluna+" :"+celula.getContents());}//for culuna lancamentos.add(newLancaAntigos(lancamento.getUnidade(),lancamento.getCodCliente(),lancamento.getNomeCliente(),lancamento.getObservacao(),lancamento.getNumBanco(),lancamento.getStatus(),lancamento.getDataemissao(),lancamento.getDatavencimento(),lancamento.getDataentrega()));}//for linhareturnlancamentos;}}
L
limaaq
Vou tentar migrar meu código da POI para o jxl, e ver qual resultado tenho,
mais tarde volto aqui então, rs.
Valeu a ajuda! :!:
P
Pacato
Cara eu formato a data assim, eu pego a data, ai vc adapta ao seu código, e formato praticamente duas vezes…: