2011-07-30 3 views
0

등의 텍스트 파일을 가지고 있는데,이 파일을 데이터 그리드 나 다른 사용자에게 친숙한 "적절한 형식"으로 표시해야합니다. (내 의도는 다음 엑셀에 추가 처리를위한 불구하고 모든 컬럼은 밀리 초 단위의 값이므로 이러한 값은 최대 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 

나는 같은 포맷하려면 :

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) 
    { 

........

:

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 

내가 사용하여 시도

그러나 나는 원하는 형식을 유지할 수 없었고, 그 문제에 관해서도 DataGrid 등에로드하지 못했습니다.

+0

어쩌면 탭으로 구분됩니다 (\ t)? –

+1

당신이 엑셀을 사용하고 싶다면 왜 이것을 컬럼 이름들 사이에 쉼표를 추가하고 엑셀을 통해 가져 와서 이것을 CSV로 변환하려고하지 않습니까? – Venki

+0

Morpheus는 파일 처리의 더 나은 방법을 생각할 수 없었기 때문에 Excel에서 가능하면 멀리 떨어져 있기를 원합니다. 감사합니다. –

답변

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 대신 두 번째'string newFile' newFile', 세번째'File.WriteAllLines (newFile, output.AotArray()'. –

+0

그것은 오류가 없으므로, 원래 요청에 표시된대로 두 줄을 하나로 병합하는 방법을 알아 내야 만합니다. –

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 예 티가 여기 보이는 방식은 항상 나오는 방법입니다. –

관련 문제