2017-07-17 8 views
0

私は.txtファイルに表示された情報を簡素化し、Excel(.CSV)で表示する小さなアプリケーションを構築しています。TXTをフィルタにかけたCSVに

私はすでに情報をStringに持っています.Nuggetで利用可能なCSVExportライブラリを使用してExcelファイルを作成する予定です。私は情報をフィルタリングして扱う必要があるということです。 データの形式は次のとおり

0001. 001.0001. 01. 3. 17. 07. 13. 12. 02.0002.V TT. .MTC1. 
75.39.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.00.00.00. 
00.00.00.00.00.00.00.16. 

Iは、最初の行(ヘッダ)を単離し、その値を維持し、「コントローラ」と呼ばれる細胞を策定しようとする - 最初の収集の日、>「MTC1」 "13.07を.2017 - 14.00h "、"タイプ " - " TT "

残りの情報については、私は各データを" 75 "、" 39 "、" 00 "最初の収集後5分ごとに、細胞あたり。

Controller MTC1 

Type  TT 

Start 20/10/2016 15:45 

20/10/2016 15:45 52 
      15:50 50 
      15:55 00 
      16:00 00 

...

私の問題は、私は情報をろ液に使用するつもりだ方法です。 私はそうするためにいくつかの方法を研究してきましたが、私の経験の不足のために、私はちょうど正しいものを選んだように見えません。リストを作成し、StringBufferの...

は、ここで私は今まで何をやったかです:

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      CsvExport myExport = new CsvExport(); 
      OpenFileDialog openFileDialog1 = new OpenFileDialog(); 
      int first=0; 
      openFileDialog1.ShowDialog(); 
      { 
       String line = ""; 
       string[] Results = new string[500]; 
       String filepath = openFileDialog1.FileName; 
       StreamReader sr = new StreamReader(filepath); 
       int i = 0; 
       while ((line = sr.ReadLine()) != null) 
       { 
        Results[i] += line; 
        i++; 
       } 

       Console.Write(Results[0]); 
       string csvpath = "C:\\counts.csv"; 

      } 
     } 
    } 
} 

、どのようにテーブルの値をフィルタするだろう、このファイルのフォーマットを持ちますか?

ありがとうございました。

+0

あなたがしたいことが不明です。あなたはcsvを持っていて、あなたはそれを読んでいます。すでに列を知っていませんか? – FortyTwo

+1

希望する出力ファイル形式の例を追加できますか? –

+0

私は質問を更新しました! – kohhworlwide

答えて

1

Splitメソッド(msdn docs)をご覧ください。あなたはこのようにそれを使用することができます:あなたは、メモリ内の文字列を構築する必要がある場合

var sr = new StreamReader(filepath); 
string[] header = null; 
while (true) 
{ 
    var line = sr.ReadLine(); 
    if (line == null) 
     break; // End of file 

    var lineParts = line.Split(" .".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); 
    if (header == null) 
    { 
     // save first line 
     header = lineParts; 
     // now header[13] is equal "MTC1" 
    } 
    else 
    { 
     // process other lines by one 
    } 
} 

StringBuilderに便利です。あなたのケースでは、むしろStreamWriterオブジェクトが必要なようです。

+0

ありがとう、これは大きな助けになります。 – kohhworlwide

+0

@kohhworlwide [SOツアー](https://stackoverflow.com/tour)をご覧ください。答えが有用な場合はそれをアップヴォートするか、そうでない場合はダウンボートします。これは他のユーザーが良い答えを見つけるのに役立ちます –

関連する問題