2016-06-22 2 views
2

Мне нужно преобразовать текстовый файл в файл Excel. Я нашел статьи об этом, но мое требование немного отличается, поэтому я не понимаю.Преобразование текстового файла в Excel

У меня есть текстовый файл, включая строки в этом формате

Jun 13 07:35:08 mail dovecot: pop3-login: Login: user=<veena,[email protected]>, method=PLAIN, rip=102.201.122.131, lip=103.123.113.83, mpid=33178, session=<Wfdfdfcxvc> 

Я хочу, чтобы создать файл Excel, имеющий четыре колонки: -

  • первая колонка включает в себя «13 июн 07:35:08» из выше строки
  • второй столбец включает в себя «pop3» из строки выше
  • третий столбец включает в себя «Veena, .patel @ test.com»
  • и четвертая колонка включают «102.201.122.131»

Все другие данные не требуются в Excel. Как я могу это сделать? Я знаю, что это не то, что я хотел. Я должен был поместить некоторый код о том, что я пробовал в первую очередь, но на самом деле я не понимаю.

+1

Первый вопрос, если вы хотите сделать это с помощью функции Excel, или если вы хотите сделать это с помощью Excel VBA. Если вы склоняетесь к последнему, вы можете захотеть изменить теги на своем посту и добавить [Excel-VBA], чтобы вы уделяли должное внимание. Кроме того, вы правы, и этот сайт не является бесплатным кодовым письмом. Тем не менее, мы готовы помочь другим программистам (и претендентам) с ** их ** кодом. Итак, просто чтобы вы начали и давали вам идеи: http://www.homeandlearn.org/open_a_text_file_in_vba.html – Ralph

+0

На самом деле я впервые услышал о excel VBA. Я хочу генерировать файл excel с 4 столбцами, как указано выше. либо по коду, либо как U, указанным VBA .. с использованием кода. Я думаю, что могу читать строку текстового файла и получать символы между пользователем = < and > в одну строку и создайте excel с колонкой that.is, что возможно .. или VBA лучше вариант. оба варианта для меня новы –

+1

Я рекомендую вам (на первом этапе и узнать некоторые VBA) записать некоторые вещи в Excel с помощью макросажа VBA: https://www.youtube.com/watch?v=Q_HQGHPBYoo. Затем, взгляните на код и попытайтесь понять его, выделив ключевые слова VBA и нажав «F1». Кроме того, я бы рекомендовал прочитать приведенную выше ссылку. Впоследствии вы должны быть настроены на то, чтобы обеспечить первое решение этой проблемы самостоятельно. Если у вас все еще есть проблемы, не стесняйтесь возвращаться сюда и просите конкретных советов о том, что вы пытались закодировать. – Ralph

ответ

4
private void button2_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      if (!String.IsNullOrWhiteSpace(fileName)) 
      { 
       if (System.IO.File.Exists(fileName)) 
       { 
        //string fileContant = System.IO.File.ReadAllText(fileName); 
        System.Text.StringBuilder sb = new StringBuilder(); 
        List<Country> countries = new List<Country>(); 
        Country country = null; 
        string line; 
        string[] arrLine; 
        System.IO.StreamReader file = new System.IO.StreamReader(fileName); 
        while ((line = file.ReadLine()) != null) 
        { 
         if (!string.IsNullOrWhiteSpace(line)) 
         { 
          if (line.Contains("rip=")) 
          { 
           arrLine = line.Split(new string[] { "mail" }, StringSplitOptions.None); 
           if (arrLine.Length > 1) 
           { 
            sb.Append(arrLine[0] + ";"); 
            if (line.Contains("pop3-login:")) 
            { 
             sb.Append("pop3;"); 
            } 
            else if (line.Contains("imap-login:")) 
            { 
             sb.Append("imap;"); 
            } 
            else 
            { 
             sb.Append(";"); 
            } 
            arrLine = line.Split(new string[] { "user=<" }, StringSplitOptions.None); 
            if (arrLine.Length > 1) 
            { 
             arrLine = arrLine[1].Split(new string[] { ">," }, StringSplitOptions.None); 
             if (arrLine.Length > 1) 
             { 
              sb.Append(arrLine[0] + ";"); 
             } 
             else 
             { 
              sb.Append(";"); 
             } 
            } 
            else 
            { 
             sb.Append(";"); 
            } 

            arrLine = line.Split(new string[] { "rip=" }, StringSplitOptions.None); 
            if (arrLine.Length > 1) 
            { 
             arrLine = arrLine[1].Split(new string[] { "," }, StringSplitOptions.None); 
             if (arrLine.Length > 1) 
             { 
              sb.Append(arrLine[0] + ";"); 

              country = countries.FirstOrDefault(a => a.IP == arrLine[0]); 
              if (country != null && !string.IsNullOrWhiteSpace(country.IP)) 
              { 
               sb.Append(country.Name + ";"); 
              } 
              else 
              { 
               sb.Append(GetCountryByIP(arrLine[0],ref countries) + ";"); 
              } 
             } 
             else 
             { 
              sb.Append(";;"); 
             } 
            } 
            else 
            { 
             sb.Append(";;"); 
            } 
            sb.Append(System.Environment.NewLine); 
           } 
          } 
         } 
        } 

        file.Close(); 

        DialogResult dialogResult = saveFileDialog1.ShowDialog(); 
        string saveFileName=Application.StartupPath + @"\data.csv"; 
        if (dialogResult == DialogResult.OK) 
        { 
         saveFileName = saveFileDialog1.FileName; 
        } 

        System.IO.File.WriteAllText(saveFileName, sb.ToString()); 
        MessageBox.Show("File Save at " + saveFileName); 
        fileName = string.Empty; 
        textBox1.Text = string.Empty; 

       } 
       else 
       { 
        MessageBox.Show("File Not Found"); 
       } 
      } 
      else 
      { 
       MessageBox.Show("Select File"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Message:" + ex.Message + " InnerException:" + ex.InnerException); 
     } 
    } 
+0

Это java, что это имеет отношение к тегам excel, excel vba? – Sgdva

+0

это не java.this - простой код C# –

1

Если вы до VBA - после того, как вы просмотрели некоторые учебники, вам нужен такой подход.
1. Получить текстовый файл с помощью EOF method.
2. UDF для каждого из требуемых критериев с использованием REGEX бы мой подход -hint: вы можете проверить регулярное выражение логики here -.
Вот пример для извлечения электронной почты:

Function UserInString(StringToAnalyze As String) As String 
Dim regex As Object: Set regex = CreateObject("VBScript.RegExp") 
Dim Regexmatches As Variant 
Dim ItemMatch As Variant 
    With regex 
     .Pattern = "[a-z]{1,99}[,][.][A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}" 
     .Global = True 
    End With 

    If regex.Test(StringToAnalyze) = True Then 'there's a user in the string! ' 1. If regex.Test(StringToAnalyze) = True 
    Set Regexmatches = regex.Execute(StringToAnalyze) 
    For Each ItemMatch In Regexmatches 
     UserInString = IIf(UserInString = "", ItemMatch, ItemMatch & "," & UserInString) 
    Next ItemMatch 
    Else ' 1. If regex.Test(StringToAnalyze) = True 
    UserInString = "There's no user in the string!" 
    End If ' 1. If regex.Test(StringToAnalyze) = True 
End Function 

enter image description here

enter image description here

Смежные вопросы