Как я могу обработать этот файл в C #? - PullRequest
0 голосов
/ 30 июля 2011

У меня есть текстовый файл с сотнями записей , отформатированный таким образом, мне нужно отобразить этот файл в сетке данных или другом удобном для пользователя элементе управления, «правильно отформатированном» согласно вашему совету. (Мое намерение состоит в том, чтобы затем экспортировать его в Excel , что не является оптимальным выбором, хотя для дальнейшей обработки. Все столбцы являются значениями в миллисекундах, поэтому в большинстве случаев эти значения достаточно велики, вплоть до 3 часов, поэтому мне нужно преобразовать их в часы / минуты / секунды.) Как лучше всего решить эту задачу? Можно ли это сделать с помощью StreamReader? Может ли преобразование происходить в коде, поэтому нет необходимости экспортировать в Excel? Есть образцы? спасибо!

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

........

Но я не смог ни сохранить нужный формат, ни загрузить его в сетку данных и т. Д. В этом отношении.

Ответы [ 2 ]

2 голосов
/ 30 июля 2011
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 голосов
/ 30 июля 2011

Все исправлено?Например, всегда ли дата состоит из 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.
    }
}

Конечно, вам придется придумать логику, для которой нужно обрабатывать строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...