Ler de planilha no Excel e passar para Banco de Dados

Os dados são guardados num ficheiro de texto (.txt)!! Tenho os dados “Nome Data Hora Temperatura”!!Agora tenho que fazer um grafico com base nos valores Data-HOra (eixo X) eTemperatura (eixo Y). Ja vi que o ideal é usar JFreeChart mas não sei se me permite fazer o grafico a partir dos dados de um ficheiro de texto :frowning:

Alguem me pode ajudar??

[quote=BrunoNave]Os dados são guardados num ficheiro de texto (.txt)!! Tenho os dados “Nome Data Hora Temperatura”!!Agora tenho que fazer um grafico com base nos valores Data-HOra (eixo X) eTemperatura (eixo Y). Ja vi que o ideal é usar JFreeChart mas não sei se me permite fazer o grafico a partir dos dados de um ficheiro de texto :frowning:

Alguem me pode ajudar??[/quote]

Olá,
Na minha monografia os meus dados estavam em excel, dai acessei a planilha, joguei todos os valores num vetor dinamico, dai depois joguei os valores do vetor dentro de um for simples, percorrendo todo o vetor, dai a partir disso, plotei o grafico. No seu caso vc pode acessar o arquivo do tipo .TXT, jogar os valores dentro de um vetor e depois passar isso pro código do grafico. É bem simples, primeiro tenta ai acessar o arquivo, guardar os valores num vetor e depois te passo parte do codigo de como gerar o grafico a partir do vetor.

T+

Valeu!!Muito Obrigado pela ajuda!!
Percebi perfeitamente a sua dica.

Isso de ler/escrever os dados num vector e depois num ficheiro em formato .txt ja tenho feito!
Agora não estou a ver é como mando fazer o grafico porque não tenho grandes conhecimentos de jfreechart :frowning: e respectiva construção do grafico a partir dos dados(data/hora e temperatura) do ficheiro.
Se me puder arranjar algum exemplo agradecia imenso!!

Abraço e Muito Obrigado

[quote=BrunoNave]Valeu!!Muito Obrigado pela ajuda!!
Percebi perfeitamente a sua dica.

Isso de ler/escrever os dados num vector e depois num ficheiro em formato .txt ja tenho feito!
Agora não estou a ver é como mando fazer o grafico porque não tenho grandes conhecimentos de jfreechart :frowning: e respectiva construção do grafico a partir dos dados(data/hora e temperatura) do ficheiro.
Se me puder arranjar algum exemplo agradecia imenso!!

Abraço e Muito Obrigado[/quote]

Olá,
Vou enviar o que fiz na minha monografia, acho q vai ajudar:

package Monografia;
import java.awt.Font;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;

import javax.swing.JOptionPane;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.annotations.XYTextAnnotation;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
 * A demonstration application showing how to create a vertical combined chart.
 *
 */
//setDefaultCloseOperation(java.awt.Window.getWindows() .awt.WindowConstants.DISPOSE_ON_CLOSE);

public class gerar_graficos extends ApplicationFrame {



    public gerar_graficos(final String title, int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[]) {

        super(title);
        final JFreeChart chart = createCombinedChart(linhas, i_longa, f_longa, i_curta, f_curta, ewma_b, media_longa, ewma_a, media_curta, dados_planilha);
        final ChartPanel panel = new ChartPanel(chart, true, true, true, false, true);
        panel.setPreferredSize(new java.awt.Dimension(500, 270));
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 
        setContentPane(panel);

    }


    private JFreeChart createCombinedChart(int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[],  double dados_planilha[]) {

        // create subplot 1...
        final XYDataset data1 = createDataset1(linhas, i_longa, f_longa, i_curta, f_curta, ewma_b, media_longa, ewma_a, media_curta, dados_planilha);
        final XYItemRenderer renderer1 = new StandardXYItemRenderer();
        final NumberAxis rangeAxis1 = new NumberAxis("Escala - Em R$");
        final XYPlot subplot1 = new XYPlot(data1, null, rangeAxis1, renderer1);
        subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
        
        final XYTextAnnotation annotation = new XYTextAnnotation("Hello!", 50.0, 10000.0);
        annotation.setFont(new Font("SansSerif", Font.PLAIN, 9));
        annotation.setRotationAngle(Math.PI / 4.0);
        subplot1.addAnnotation(annotation);
        
        // create subplot 2...
      
        final XYItemRenderer renderer2 = new StandardXYItemRenderer();
        final NumberAxis rangeAxis2 = new NumberAxis("Escala 2");
        rangeAxis2.setAutoRangeIncludesZero(false);
      
      

        // parent plot...
        final CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Dominio - Nº de elementos"));
        plot.setGap(10.0);
        
        // add the subplots...
        plot.add(subplot1, 1);
      
        plot.setOrientation(PlotOrientation.VERTICAL);

        // return a new chart containing the overlaid plot...
        JFreeChart graf=new JFreeChart("Gráficos",
                              JFreeChart.DEFAULT_TITLE_FONT, plot, true);
        

        return graf;

    }


   private XYDataset createDataset1(int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[]) { 
    int i; int j; 
    final XYSeries series1 = new XYSeries("Média Longa");
    final XYSeries series2 = new XYSeries("EWMA - Média Longa");
    final XYSeries series3 = new XYSeries("Média Curta");
    final XYSeries series4 = new XYSeries("EWMA - Média Curta");
    //final XYSeries series5 = new XYSeries("Dados reais - Planilha Excel");
   
 
       for(i = (10 + i_curta); i <= linhas; i++){
          series1.add(i , media_longa[i]); // plota grafico  de media longa
          series2.add(i , ewma_b[i]);  // plota grafico ewma de media longa
          series3.add(i , media_curta[i]);  // plota grafico de media curta
          series4.add(i , ewma_a[i]);  // plota grafico ewma de media curta
         // series5.add(i , dados_planilha[i]);  // plota grafico de valores reais da planilha
        
       } // fim do for i
  
        final XYSeriesCollection collection = new XYSeriesCollection();
        collection.addSeries(series1);
        collection.addSeries(series2);
        collection.addSeries(series3);
        collection.addSeries(series4);
        //collection.addSeries(series5);
        return collection;
      
   }  
   

    public void windowClosed(WindowEvent event) {
        dispose();
    }
}

esse arquivo eu usei só pra gerar o grafico, todo o tratamento dos vetores eu fiz em outro arquivo e passei como parametro para esse gerar o grafico;

gerar_graficos grafico = new gerar_graficos("Gráficos - EWMA, Média Longa e Média Curta", linhas, f_longa, i_longa, i_curta, f_curta, ewma_b, media_longa, ewma_a, media_curta, dados_planilha);
            grafico.pack();
            RefineryUtilities.centerFrameOnScreen(grafico);
            grafico.setVisible(true);
            dispose();

não sei se sabe, mais vc vai ter a add as bibliotecas no seu java, no netbeans é facil de fazer isso.

T+

Valeu a ajuda! Muito Obrigado!

Mas nao estou percebendo donde voce retira esses dados:

int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[].

E onde voce os tem armazenados?

Abraço

[quote=BrunoNave]Valeu a ajuda! Muito Obrigado!

Mas nao estou percebendo donde voce retira esses dados:

int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[].

E onde voce os tem armazenados?

Abraço[/quote]

Olá,

Isso são variáves q usei no meu programa (int linhas, int i_curta, int f_curta, int f_longa, int i_longa) e isso são os vetores (double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[]), então subistitua isso pelas suas variavés que funciona.

T+

Ok Muito Obrigado!!

E Voce tem essas variaveis e esses vectores guardados num ficheiro?

É que no meu caso vou ter que as ter num ficheiro e depois ir ao ficheiro retirar os respectivos valores para construir o grafico!!

Tenho que fazer a chamada do respectivo ficheiro em algum lado?

Abraço

[quote=BrunoNave]Ok Muito Obrigado!!

E Voce tem essas variaveis e esses vectores guardados num ficheiro?

É que no meu caso vou ter que as ter num ficheiro e depois ir ao ficheiro retirar os respectivos valores para construir o grafico!!

Tenho que fazer a chamada do respectivo ficheiro em algum lado?

Abraço[/quote]

Olá,

Acho q vc não entendeu oq eu quis dizer até agora, então vou por passos.

Seus dados estão em um arquivo do tipo .TXT, então, te recomento duas coisas;

1º. vc faz o acesso direto ao arquivo,
Por exemplo:

um arquivo com 10 valores, um debaixo do outro, vc vai lendo linha a linha;

lendo os dados no arquivo, linha a linha, pega todos os valores, joga num vetor (se vc ja souber a qtdade de linhas vc usa um vetor estatico se vc não souber, usa um vetor dinamico), depois q os seus dados tiverem no vetor, usa akele codigo q te passei pra plotar o grafico. Só lembrando q existem vários tipos de graficos, não sei se akele grafico q te passei é o tipo de grafico q c quer.

então a questão é o inverso dakilo q vc ta achando q é :

“E Voce tem essas variaveis e esses vectores guardados num ficheiro?”

é o contrario, os valores do seu ficheiro q vão ser guardados em variáveis.

T+

Ok Valeu

Muito Obrigado

[quote=BrunoNave]Ok Valeu

Muito Obrigado[/quote]

De nada, tamos ai pra ajudar, o pessoal daki me ajudou muito, é uma retribuição e boa sorte.

Anderson Dorneles

Cara você faz a chamada do ficheiro de texto nalgum lado?Ou faz um read file ou algo do genero?

Esse ficheiro pode estar armazenado nalgum lado ou tem que tar dentro da pasta do Projecto?

Abraço

[quote=BrunoNave]Cara você faz a chamada do ficheiro de texto nalgum lado?Ou faz um read file ou algo do genero?

Esse ficheiro pode estar armazenado nalgum lado ou tem que tar dentro da pasta do Projecto?

Abraço[/quote]

Deixa eu ver se entendi vc,

Eu primeiro fiz uma função de leitura, escrita e fechamento do arquivo, por exemplo:

Ler_arquivo(){
abro o arquivo,
Leio o arquivo (linha por linha),
Altero seu conteudo (ou não)
Fecho o arquivo,
}

dai onde eu precisava ler o meu arquivo eu usava a função

eu tenho o codigo completo, mais ta la em casa, me manda outra msg pedindo o arquivo q eu te envio.

Ok Muito Obrigado.

Quando puder me mande o arquivo se faz favor para eu ver.

Abraço.

[quote=BrunoNave]Ok Muito Obrigado.

Quando puder me mande o arquivo se faz favor para eu ver.

Abraço.[/quote]

Essa é a função de leitura do arquivo:

[code]
public static void leitura_arquivo_lambida()throws IOException, BiffException{
// Pega o valor lambida do arquivo
String linha;
File arquivo = new File(“c:/lambida.txt”); // cria o arquivo chamado lambida.txt em C:/
if (arquivo.exists()){ // se arquivo existir faz …
try {
FileReader leitura; // Cri ao objeto de leitura
leitura = new FileReader(arquivo); // passa o nome do arquivo (lambida.txt) para o objeto
BufferedReader ler = new BufferedReader(leitura); // cria um buffer pra leitura
try {
while( (linha = ler.readLine()) != null ) // cria um laço para ler o arquivo linha por linha
lambida1 = linha; // Valor inserido no arquivo
lambida = Double.parseDouble(lambida1); // Conversão do valor para Double
//JOptionPane.showMessageDialog(null,"Valor de Lambida " + lambida);
} catch (HeadlessException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}

    }else{
        // arquivo não existe
        JOptionPane.showMessageDialog(null,"Arquivo lambida.txt não existe ");
    }   
}

}

[code/]
Função de verificação do arquivo

public static void verifica_arquivo_lambida() throws IOException, BiffException{
       double valor_inicial; 
       try {
            //double valor_inicial = 0.94;  // Coloca um valor inicial dentro do arquivo
            File arquivo = new File("c:/lambida.txt");
            //PrintWriter arquivo = new PrintWriter(arquivo);
            //arquivo.print(0.94);
            // Cria arquivo se ele não existir
           // boolean success = (new File("c:\monografia")).mkdir(); // Tentei aki por o arquivo criado dentro de uma pasta mais não deu certo
            boolean success = arquivo.createNewFile(); // função que verifica se o arquivo existe, se não existir
            if (success) {                                           //
                FileWriter fw;                                       // cria o arquivo
                fw = new FileWriter("c:/lambida.txt");    // com o nome lambida.txt
                PrintWriter pw = new PrintWriter(fw);    //  crio objeto de escrita no arquivo
                valor_inicial = 0.94;                             //  variavel com um valor inicial 
                pw.print(valor_inicial);                         //   Grava valor incial no arquivo
                pw.close();                                         //    fecha o arquivo
                JOptionPane.showMessageDialog(null,"Arquivo lambida.txt criado com sucesso ! " ); 
            } else {
                // Arquivo já existe
                JOptionPane.showMessageDialog(null,"Arquivo lambida.txt já existe ! " ); 
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

dai depois de criar essas duas funções, eu usei elas no meu programa:

leitura_arquivo_lambida(); // quando eu precisei ler o arquivo
verifica_arquivo_lambida(); // quando precisei verificar se havia um valor dentro do arquivo (pq não podia ser em branco) e a propria existencia do arquivo.

Espero ter ajudado,
T+

Anderson Dorneles

Ok Valeu, Muito Obrigado.

É nesse ficheiro lambida.txt que voce tem seus dados? E depois como os adiciona no grafico?

Cumprimentos

[quote=BrunoNave]Ok Valeu, Muito Obrigado.

É nesse ficheiro lambida.txt que voce tem seus dados? E depois como os adiciona no grafico?

Cumprimentos[/quote]

Olá,

Não, meus dados vem de uma planilha do excel, eu guardo nesse ficheiro somente uma variável q uso no meu calculo.

T+

Olá Pessoal…

Eu to usando este DateCell, só que a Data vem cabulosamente cheia de informações (Feb 29…) eu só queria que retornasse do jeito que está na célula (29/02/2007)
tentei como string também, só que ele retorna 29/02/07 ou quando tento usar o simpledateformat ele retorna (0007/02/29).

Alguem ai pode me ajudar?