TXT到过滤的CSV

时间:2017-07-17 13:53:40

标签: c# excel csv

我正在构建一个小应用程序,旨在简化.txt文件中显示的信息并在Excel(.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.

我打算隔离第一行(Header),保留其值,制定一个名为" Controller" - > " MTC1" ,第一次收集的日期" 13.07.2017 - 14.00h"," Type" - > " TT"

对于其他信息,我打算将每个数据" 75",#34; 39",#34; 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";

            }
        }
    }
}

现在,使用这种格式的文件,您将如何过滤表格的值?

感谢。

1 个答案:

答案 0 :(得分: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对象。