2011-07-30 4 views
0

私はこのファイルをのような書式で入力したのテキストファイルを持っています。このファイルをデータグリッドに表示するか、他のユーザーフレンドリーなコントロールをあなたのアドバイスに従って適切にフォーマットする必要があります。 (私の意向は、をExcelにエクスポートして、さらに処理するためにはですが、すべての列はミリ秒単位の値なので、これらの値はほとんどの場合3時間まで大きくなりますので、時間単位に変換する必要があります/分/秒)このタスクにアプローチする最善の方法は何ですか?これはStreamReaderで行うことができますか?変換をコードで行うことができるので、Excelにエクスポートする必要はありませんか?どんなサンプル?ありがとうございました!このファイルをC#でどのように処理できますか?

ENTRY DAY ENTRY TIME IN.WORK TEST %  TRY CORRER  CORTA CICLO MAQUI 
    O0.TXT    
     11/07/28 13:39:13  0  0  105  0  0  0  0 
    O0.TXT    
     11/07/20 00:00:00  0  0 19145  0  0  0  0 
    O0.TXT    
     11/07/19 15:04:10  0  0 32151  0  0  0  0 

私はそのようにフォーマットします:

FILE ENTRY DAY ENTRY TIME IN.WORK TEST % TRY CORRER CORTA CICLO MAQUI 
O0.TXT 11/07/28 13:39:13  0  0  105  0  0  0  0 
O0.TXT 11/07/20 00:00:00  0  0 19145  0  0  0  0 
O0.TXT 11/07/19 15:04:10  0  0 32151  0  0  0  0 
O0.TXT 11/07/07 05:22:40  0  0  508  0  0  0  0 

私が使用してみました:

string fileName = "Myfile.txt"; 
StreamReader sr = new StreamReader(fileName); 
string[] delimiter = new string[] { " " }; 
while (!sr.EndOfStream) 
{ 
    string[] lines = sr.ReadLine().Split(delimiter, StringSplitOptions.RemoveEmptyEntries); 
    foreach (string line in lines) 
    { 

........

しかし、私はすべてのフォーマットを保持することはできませんでしたし、そのことについてはデータグリッドなどにロードすることもできませんでした。

+0

タブ(\ t)で区切られている可能性がありますか? –

+1

Excelを使用したい場合は、列名の間にカンマを追加してExcelにインポートして、これをcsvに変換してみてください。 – Venki

+0

Morpheusはファイルを処理する良い方法を見つけられなかったので、可能ならばできるだけエクセルから遠く離れたくありませんでした。ありがとうございます –

答えて

2
string fileName = "Myfile.txt"; 

string[] delimiter = new string[] { " " }; 

List<string[]> rows = new List<string[]>(); 

string[] liens = File.ReadAllLines(fileName); 

foreach (string line in liens) 
{ 
    rows.Add(line.Split(delimiter, StringSplitOptions.RemoveEmptyEntries)); 
} 

//Now if you want to display them each one row item separated by tab "`\t"` or csv `","` 
string separator = "\t"; 

List<string> output = new List<string>(); 

foreach (string[] row in rows) 
{ 
    output.Add(string.Join(separator, row)); 
} 

string newFile = "result.txt"; 
File.WriteAllLines(newFile, output.ToArray());//save the output to new file. 
+0

あなたが得ているエラーは何ですか?あなたが使用している.netバージョンは何ですか? –

+0

[OK]を、私はちょうどタイプミスをチェックしていない申し訳ありませんが、私はそれを修正し、 '行の文字列'の代わりに最初の 'string []行'、 'strginの代わりに2番目の' string newFile' newFile'、第3の 'File.WriteAllLines(newFile、output.AotArray()'。 –

+0

それはエラーが発生しなかったので、元のリクエストに示されているように2行を1つにマージする方法を理解する必要があります。 –

0

すべては固定ですか?たとえば、日付は常に6文字で8文字の長さですか(場合によっても)。もしそうなら、私は "\ r \ n"と分けて分割し、それぞれの行を個別に処理します。あなたは何ができる:

string fileName = "Myfile.txt"; 
StreamReader sr = new StreamReader(fileName); 
string[] delimiter = new string[] { "\r\n" }; 
while (!sr.EndOfStream) 
{ 
    string[] lines = sr.ReadLine().Split(delimiter, StringSplitOptions.RemoveEmptyEntries); 
    foreach (string line in lines) 
    { 
     date = line.Substring(6, 8); 
     // Do the other processing here. 
    } 
} 

はもちろん、あなたが処理する必要のある行のためにいくつかのロジックを思い付くする必要があります。

+0

@ pauleck1はいティは、それがいつも出てくる方法ですここに見える方法 –

関連する問題