Data no Excel

Fala galera, beleza?

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.

Deu pra entender ou ficou meio confuso? rs

Desde já muito obrigado! :wink:

Você precisa tratar o dado como Date mesmo, desta forma:

DateCell vencimento = (DateCell) celula;

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! :!:

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

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

[code]SimpleDateFormat formatoArquivo = new SimpleDateFormat(campo.getFormatoDaData());
String dataAntiga = cell.toString();

SimpleDateFormat formatoMySQL = new SimpleDateFormat(“yyyy-MM-dd”);
Date date = formatoArquivo.parse(dataAntiga);
return formatoMySQL.format(date);[/code]

o getFormatoDaData() que vem ali é dd/MM/yyyy formato como estou colocando no excel, mas só pra reforçar rs, ele me retorna outro tipo.

ai o erro que vai dar é esse:

java.text.ParseException: Unparseable date: "09-Fev-1994"

Se puder me ajudar agradeço muito cara! :wink:

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 …

Acho que assim vai te ajudar mais…

[code]import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import br.com.controleboleto.model.LancaAntigos;
import br.com.controleboleto.utilitarios.Utilitarios;

import jxl.Cell;
import jxl.DateCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class ImportaExcel {

Utilitarios util = new Utilitarios();


public List<LancaAntigos> lista() throws BiffException, IOException, ParseException{
	List<LancaAntigos> lancamentos = new ArrayList<LancaAntigos>();	
	/**
        * Carrega a planilha
        */
        Workbook workbook = Workbook.getWorkbook(new File("C:/Resumo.xls"));
        /**
        * Aqui é feito o controle de qual aba do xls 
        * será realiza a leitura dos dados
        */
        Sheet sheet = workbook.getSheet(0);

        /**
        * Numero de linhas com dados do xls
        */
        int linhas = sheet.getRows();
        
        //System.out.println("Linhas : " + linhas);
        
        for(int linha = 0; linha < 1000; linha++  ){
        	
        	LancaAntigos lancamento = new LancaAntigos();
        	
        	for (int coluna =0; coluna <= 7; coluna ++){
        		
        		Cell celula = sheet.getCell(coluna, linha);
        		
        		if (coluna == 0){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setNumBanco(null);
        			}
        			else{
        				lancamento.setNumBanco(celula.getContents().toString());	
        			}
        		}
        		else if (coluna == 1){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setDatavencimento(null);
        			}
        			else{
        				DateCell vencimento = (DateCell) celula;
	        			lancamento.setDatavencimento(vencimento.getDate());
        			}	
        		}
        		else if (coluna == 2){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setCodCliente(0);
        			}
        			else{
        				lancamento.setCodCliente(Integer.parseInt(celula.getContents().toString()));
        			}	
        		}
        		else if (coluna == 3){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setNomeCliente(null);
        			}
        			else{
        				lancamento.setNomeCliente(celula.getContents().toString().toUpperCase());
        			}	
        		}
        		else if (coluna == 4){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setUnidade(0);
        			}
        			else{
        				lancamento.setUnidade(Integer.parseInt(celula.getContents().toString()));
        			}
        			
        		}
        		else if (coluna == 5){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setDataentrega(null);
        				lancamento.setDataemissao(null);
        			}
        			else{
        				DateCell entrega = (DateCell) celula;
        				lancamento.setDataentrega(entrega.getDate());
        				lancamento.setDataemissao(entrega.getDate());
        			}	
        		}
        		else if (coluna == 6){
        			if (celula.getContents().equals("") || celula.getContents() == null){
        				lancamento.setStatus(null);
        			}
        			else{
        				lancamento.setStatus(celula.getContents().toString());
        			}	
        		}
        		else if (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(new LancaAntigos(lancamento.getUnidade(), lancamento.getCodCliente(), lancamento.getNomeCliente(), lancamento.getObservacao(),
            		lancamento.getNumBanco(),lancamento.getStatus(),lancamento.getDataemissao(), lancamento.getDatavencimento(), lancamento.getDataentrega()));
        }//for linha
        
      return lancamentos;
}

}[/code]

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! :!:

Cara eu formato a data assim, eu pego a data, ai vc adapta ao seu código, e formato praticamente duas vezes…:


	public Date transformaData(String data) {
		Date retorno = null;
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
		try {
			retorno = formatador.parse(data);
		} catch (ParseException ex) {
			throw new RuntimeException(ex);
		}

		return retorno;
	}



			case DATA_ATIVACAO:
				TimeZone gmtZone = TimeZone.getTimeZone("GMT");
				SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
				format.setTimeZone(gmtZone);
				if (celula.getContents() != null && celula.getContents() != "") {
					DateCell dataCell = (DateCell) celula;
					String dataFormatada = format.format(dataCell.getDate());
					linhaTelecom.setDtAtivacao(transformaData(dataFormatada));
				} else {
					linhaTelecom.setDtAtivacao(null);
				}
				break;