Ir para conteúdo
Fórum Script Brasil
  • 0

Extração de dados de um .txt


Marcelo Gomes Plantier

Pergunta

Olá, prezados. 

Estou criando um código que irá automatizar os relatórios no trabalho a partir de um button. O equipamento de medição me da um arquivo em .mmf ou .txt, e tem uma parte importante que estou quebrando a cabeça para conseguir resolver e estou a uns dias sem avançar. 

Abaixo é o texto que quero extrair, os dados (números separados por ponto e vírgula) sempre tem a mesma quantidade de colunas e as linhas variam de acordo com a medição feita. Quero descobrir a forma de retirar tudo que está entre "MWTTanDeltaValues=" até "MWTTanDeltaTimeValues=" e colar na planilha em uma linha só. 

 

"MWTTanDeltaValues=
27.5766;27.5707;27.3737;26.6112;26.0126;26.2416;26.1120;
26.1621;25.7420;25.9710;25.6238;25.7683;25.8689;26.1269;
26.1321;26.2643;25.7848;25.1501;25.3091;25.0000;25.3175;
25.5920;24.8733;24.6167;24.6299;24.7430;25.4183;25.9896;
25.4958;25.4259;26.4650;25.7657;30.0259;30.5261;30.2207;
30.7683;30.5524;31.4316;30.5092;31.2188;31.3513;31.4804;
31.1870;31.5287;31.2671;30.7482;29.5514;28.6546;29.6851;
29.2009;29.2151;29.1309;29.1466;33.0232;31.8877;30.4890;
26.8053;27.0559;26.8480;25.6997;25.8613;26.7863;26.0611;
26.7878;27.2462;25.6071;25.9075;25.9302;25.8017;26.8502;
26.7850;26.3517;25.5865;26.1033;25.8408;26.2310;25.0309;
23.9557;24.0468;24.0217;23.7751;24.5628;24.3670;24.3429;
25.5378;27.6765;24.4876;24.7278;23.9403;
MWTTanDeltaTimeValues="

 

Essa solução iria resolver qualquer outro problema que eu pudesse ter no futuro. 

Agradeço desde já!

 

Abraço!!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

exemplos:

 fileName   =   "C:\text.txt" 
 fileNo   =   FreeFile   'Get first free file number   
    
 Open  fileName  For   Input  As   # fileNo 
 Do   While   Not   EOF ( fileNo ) 
    Line  Input   # fileNo ,   textRow 
    textData   =   textData   &   textRow 
 Loop 
 Close   # fileNo 

http://www.excel-easy.com/vba/examples/read-data-from-text-file.html

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://codevba.com/office/read_text_file_line_by_line.htm&prev=search

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://www.homeandlearn.org/open_a_text_file_in_vba.html&prev=search

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Em 17/02/2018 at 10:32, Jhonas disse:

exemplos:


 fileName   =   "C:\text.txt" 
 fileNo   =   FreeFile   'Get first free file number   
    
 Open  fileName  For   Input  As   # fileNo 
 Do   While   Not   EOF ( fileNo ) 
    Line  Input   # fileNo ,   textRow 
    textData   =   textData   &   textRow 
 Loop 
 Close   # fileNo 

http://www.excel-easy.com/vba/examples/read-data-from-text-file.html

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://codevba.com/office/read_text_file_line_by_line.htm&prev=search

https://translate.google.com.br/translate?hl=pt-BR&sl=en&u=http://www.homeandlearn.org/open_a_text_file_in_vba.html&prev=search

abraço

Na verdade já tenho todo processo de abrir o arquivo e alocar os dados na planilha já está sendo realizado. O meu problema é não consigo extrair os dados do arquivo que estão entre: "MWTTanDeltaValues=" e "MWTTanDeltaTimeValues=". Gostaria de uma forma de conseguir fazer uma função de buscar no arquivo a primeira linha mencionada, e extrair apenas os dados abaixo dela até a segunda linha mencionada, já separando os dados (eles estão separados por ponto e vírgula ";"). A seguir o trecho do arquivo:

MWTTanDeltaMean=27.0355 
MWTTanDeltaSTD=2.3498 
MWTTanDeltaChangeOverTime=1.8083
MWTTanDeltaDuration= 15 
MWTTanDeltaMeanPeakVoltage=34475.3700 
MWTTanFrequency=0.1000
MWTTanDeltaValues=
27.5766;27.5707;27.3737;26.6112;26.0126;26.2416;26.1120;
26.1621;25.7420;25.9710;25.6238;25.7683;25.8689;26.1269;
26.1321;26.2643;25.7848;25.1501;25.3091;25.0000;25.3175;
25.5920;24.8733;24.6167;24.6299;24.7430;25.4183;25.9896;
25.4958;25.4259;26.4650;25.7657;30.0259;30.5261;30.2207;
30.7683;30.5524;31.4316;30.5092;31.2188;31.3513;31.4804;
31.1870;31.5287;31.2671;30.7482;29.5514;28.6546;29.6851;
29.2009;29.2151;29.1309;29.1466;33.0232;31.8877;30.4890;
26.8053;27.0559;26.8480;25.6997;25.8613;26.7863;26.0611;
26.7878;27.2462;25.6071;25.9075;25.9302;25.8017;26.8502;
26.7850;26.3517;25.5865;26.1033;25.8408;26.2310;25.0309;
23.9557;24.0468;24.0217;23.7751;24.5628;24.3670;24.3429;
25.5378;27.6765;24.4876;24.7278;23.9403;
MWTTanDeltaTimeValues=
25.8168;27.8008;27.0355;
MWTTanDeltaSTDTimeValues= 
0.7685;2.4520;2.3498; 
MWTTanDeltaChangeTimeValues=
----------------------- 
[Result]
SmileyPhase1=3
Temperature=
MeasurementResult=0 
TEST SEQUENCE COMPLETED SUCCESSFULLY
2017-12-27 14.08"

 

Link para o comentário
Compartilhar em outros sites

  • 0

Já te passei exemplos para fazer isso...

http://www.hardware.com.br/comunidade/ler-arquivos/1061210/

mas vai um exemplo pronto

using System;

namespace LerTexto
{

  public class LerTexto
  {
    public static TextFile Arq;
    public static String Arqorigem;
    public static String Linha;
    public static int inicio;
    public static int fim;
    public static int n;

    void run()
    {
      Arqorigem = Trim("c:\\TextoC.txt");
      AssignFile(Arq, Arqorigem);
      Reset(Arq);
      ReadLn(Arq, Linha);
      inicio = 0;
      fim = 0;
      n = 0;
      while (! eof(Arq))
      {
        Readln(Arq, Linha);
        if (pos("MWTTanDeltaValues=", linha) > 0)
        {
          inicio = 1;
        }
        if (pos("MWTTanDeltaTimeValues=", linha) > 0)
        {
          fim = 1;
        }
        if ((inicio == 1) && (fim != 1))
        {
          n = n + 1;
          if (n >= 2)
          {
            Edit1.Text = Edit1.Text + linha;
          }
        }
      }
      CloseFile(Arq);
    }

    public static void Main(string[] args)
    {
      LerTexto myApp = new LerTexto();
      myApp.run();
    }
  }
}

Não testei, mas a lógica está correta

resultado no Edit1 ( uma unica linha com os valores )

27.5766;27.5707;27.3737;26.6112;26.0126;26.2416;26.1120;26.1621;25.7420;25.9710;25.6238;25.7683;25.8689;26.1269;26.1321;26.2643;25.7848;25.1501;25.3091;25.0000;25.3175;25.5920;24.8733;24.6167;24.6299;24.7430;25.4183;25.9896;25.4958;25.4259;26.4650;25.7657;30.0259;30.5261;30.2207;30.7683;30.5524;31.4316;30.5092;31.2188;31.3513;31.4804;31.1870;31.5287;31.2671;30.7482;29.5514;28.6546;29.6851;29.2009;29.2151;29.1309;29.1466;33.0232;31.8877;30.4890;26.8053;27.0559;26.8480;25.6997;25.8613;26.7863;26.0611;26.7878;27.2462;25.6071;25.9075;25.9302;25.8017;26.8502;26.7850;26.3517;25.5865;26.1033;25.8408;26.2310;25.0309;23.9557;24.0468;24.0217;23.7751;24.5628;24.3670;24.3429;25.5378;27.6765;24.4876;24.7278;23.9403;

veja esse comando:

http://www.cplusplus.com/reference/string/string/find/

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...