Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 格式化txt文件并将其显示到gridview_C#_.net_Visual Studio 2010 - Fatal编程技术网

C# 格式化txt文件并将其显示到gridview

C# 格式化txt文件并将其显示到gridview,c#,.net,visual-studio-2010,C#,.net,Visual Studio 2010,这是我的第一篇帖子,我是C#的新手,所以请温柔一点:p。 我正在编写一个应用程序,它读取一些txt文件,然后在gridview中显示它们(稍后我会用它做更多的事情,但现在它并不重要)。几乎我所有的文件都有一些已建立的字符系统(总是有三列用coma分隔),在这里,我可以将它们放入列表中读取,然后绑定到gridview中。 但我也有一些文件没有相同的字符系统,我在处理它们时遇到了问题。你能帮我把它们格式化成这个原始的字符系统吗。下面是我的函数,用于将所有内容加载到列表中,然后加载到gridview中

这是我的第一篇帖子,我是C#的新手,所以请温柔一点:p。 我正在编写一个应用程序,它读取一些txt文件,然后在gridview中显示它们(稍后我会用它做更多的事情,但现在它并不重要)。几乎我所有的文件都有一些已建立的字符系统(总是有三列用coma分隔),在这里,我可以将它们放入列表中读取,然后绑定到gridview中。 但我也有一些文件没有相同的字符系统,我在处理它们时遇到了问题。你能帮我把它们格式化成这个原始的字符系统吗。下面是我的函数,用于将所有内容加载到列表中,然后加载到gridview中。我还发布了一个具有良好字符系统的文件示例,这是一个未格式化的文件

29-01-2013 03:49:31.629,一些文字ghs(23)。asv,更多文字

    private void button7_Click(object sender, EventArgs e)
{
    List<MyColumns> list = new List<MyColumns>();

    OpenFileDialog openFile1 = new OpenFileDialog();
    openFile1.Multiselect = true;

    if (openFile1.ShowDialog() != DialogResult.Cancel)
    {
        foreach (string filename in openFile1.FileNames)
        {

            using (StreamReader sr = new StreamReader(filename))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] _columns = line.Split(",".ToCharArray());
                    MyColumns mc = new MyColumns();
                    mc.Time = _columns[0];
                    mc.System_Description = _columns[1];
                    mc.User_Description = _columns[2];
                    list.Add(mc);
                }
            }
        }
        DataTable ListAsDataTable = BuildDataTable<MyColumns>(list);
        DataView ListAsDataView = ListAsDataTable.DefaultView;
        this.dataGridView1.DataSource = view = ListAsDataView;
        this.dataGridView1.AllowUserToAddRows = false;
        dataGridView1.ClearSelection();
    }
    textBox1.Text = this.dataGridView1.Rows.Count.ToString();
}
17-07-2011 12:12:32.643,一些文本也是dsad(1),更多文本

    private void button7_Click(object sender, EventArgs e)
{
    List<MyColumns> list = new List<MyColumns>();

    OpenFileDialog openFile1 = new OpenFileDialog();
    openFile1.Multiselect = true;

    if (openFile1.ShowDialog() != DialogResult.Cancel)
    {
        foreach (string filename in openFile1.FileNames)
        {

            using (StreamReader sr = new StreamReader(filename))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] _columns = line.Split(",".ToCharArray());
                    MyColumns mc = new MyColumns();
                    mc.Time = _columns[0];
                    mc.System_Description = _columns[1];
                    mc.User_Description = _columns[2];
                    list.Add(mc);
                }
            }
        }
        DataTable ListAsDataTable = BuildDataTable<MyColumns>(list);
        DataView ListAsDataView = ListAsDataTable.DefaultView;
        this.dataGridView1.DataSource = view = ListAsDataView;
        this.dataGridView1.AllowUserToAddRows = false;
        dataGridView1.ClearSelection();
    }
    textBox1.Text = this.dataGridView1.Rows.Count.ToString();
}
31-01-2013 08:14:08.473,一些文本sdfsdfsd[2],更多文本

    private void button7_Click(object sender, EventArgs e)
{
    List<MyColumns> list = new List<MyColumns>();

    OpenFileDialog openFile1 = new OpenFileDialog();
    openFile1.Multiselect = true;

    if (openFile1.ShowDialog() != DialogResult.Cancel)
    {
        foreach (string filename in openFile1.FileNames)
        {

            using (StreamReader sr = new StreamReader(filename))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    string[] _columns = line.Split(",".ToCharArray());
                    MyColumns mc = new MyColumns();
                    mc.Time = _columns[0];
                    mc.System_Description = _columns[1];
                    mc.User_Description = _columns[2];
                    list.Add(mc);
                }
            }
        }
        DataTable ListAsDataTable = BuildDataTable<MyColumns>(list);
        DataView ListAsDataView = ListAsDataTable.DefaultView;
        this.dataGridView1.DataSource = view = ListAsDataView;
        this.dataGridView1.AllowUserToAddRows = false;
        dataGridView1.ClearSelection();
    }
    textBox1.Text = this.dataGridView1.Rows.Count.ToString();
}
未格式化的文本在开头有一些空格,然后是一些数字,(点)和另一个空格。在这之后,我想开始阅读,摆脱以前的一切。此外,在我的正确数据之间没有逗号,只有空格。是这样的事

拜托,伙计们,你们能帮帮我吗

  • 23-05-2009 12:12:45.675一些文本fsdf一些更多的文本

  •     private void button7_Click(object sender, EventArgs e)
    {
        List<MyColumns> list = new List<MyColumns>();
    
        OpenFileDialog openFile1 = new OpenFileDialog();
        openFile1.Multiselect = true;
    
        if (openFile1.ShowDialog() != DialogResult.Cancel)
        {
            foreach (string filename in openFile1.FileNames)
            {
    
                using (StreamReader sr = new StreamReader(filename))
                {
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        string[] _columns = line.Split(",".ToCharArray());
                        MyColumns mc = new MyColumns();
                        mc.Time = _columns[0];
                        mc.System_Description = _columns[1];
                        mc.User_Description = _columns[2];
                        list.Add(mc);
                    }
                }
            }
            DataTable ListAsDataTable = BuildDataTable<MyColumns>(list);
            DataView ListAsDataView = ListAsDataTable.DefaultView;
            this.dataGridView1.DataSource = view = ListAsDataView;
            this.dataGridView1.AllowUserToAddRows = false;
            dataGridView1.ClearSelection();
        }
        textBox1.Text = this.dataGridView1.Rows.Count.ToString();
    }
    
  • 13-02-2003 11:12:45.454一些文本

        private void button7_Click(object sender, EventArgs e)
    {
        List<MyColumns> list = new List<MyColumns>();
    
        OpenFileDialog openFile1 = new OpenFileDialog();
        openFile1.Multiselect = true;
    
        if (openFile1.ShowDialog() != DialogResult.Cancel)
        {
            foreach (string filename in openFile1.FileNames)
            {
    
                using (StreamReader sr = new StreamReader(filename))
                {
                    string line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        string[] _columns = line.Split(",".ToCharArray());
                        MyColumns mc = new MyColumns();
                        mc.Time = _columns[0];
                        mc.System_Description = _columns[1];
                        mc.User_Description = _columns[2];
                        list.Add(mc);
                    }
                }
            }
            DataTable ListAsDataTable = BuildDataTable<MyColumns>(list);
            DataView ListAsDataView = ListAsDataTable.DefaultView;
            this.dataGridView1.DataSource = view = ListAsDataView;
            this.dataGridView1.AllowUserToAddRows = false;
            dataGridView1.ClearSelection();
        }
        textBox1.Text = this.dataGridView1.Rows.Count.ToString();
    }
    
    private void按钮7\u单击(对象发送者,事件参数e)
    {
    列表=新列表();
    OpenFileDialog openFile1=新建OpenFileDialog();
    openFile1.Multiselect=true;
    如果(openFile1.ShowDialog()!=DialogResult.Cancel)
    {
    foreach(openFile1.FileNames中的字符串文件名)
    {
    使用(StreamReader sr=新StreamReader(文件名))
    {
    弦线;
    而((line=sr.ReadLine())!=null)
    {
    string[]_columns=line.Split(“,”.ToCharArray());
    MyColumns mc=新的MyColumns();
    mc.Time=_列[0];
    mc.System_Description=_列[1];
    mc.User_Description=_列[2];
    列表。添加(mc);
    }
    }
    }
    DataTable ListAsDataTable=BuildDataTable(列表);
    DataView ListAsDataView=ListAsDataTable.DefaultView;
    this.dataGridView1.DataSource=view=ListAsDataView;
    this.dataGridView1.allowUserToAddress=false;
    dataGridView1.ClearSelection();
    }
    textBox1.Text=this.dataGridView1.Rows.Count.ToString();
    }
    
    我也在考虑使用reg表达式,我的文本格式如下所示。字段1>(6)字段2>(23)字段3>(2)字段4>(50+)字段3是用作分隔符的空格,在处理文本时是否可以将其更改为逗号


  • 如果它是固定宽度的列,那么一种方法是使用string.Substring,然后使用string.Trim修剪每个列的结果。

    它是CSV文件吗?所有字段都用“,”删除吗。如果是这样的话,请帮自己一个忙,不要试图自己解析csv——正确地解析csv可能非常棘手。
    KBCSV是一个免费的C#库,可以轻松地将csv文件读入数据表。

    如果没有您想要格式化的数据示例,很难提供建议。我要做的第一件事是删除所有的空白。“未格式化”文件中的分隔符是什么。如上面的示例所示。它从几个空格开始,然后是带“.”的数字,然后是两个空格,最后是我感兴趣的数据。Delimeter在本例中为2个空格。第一部分很容易划界,从左侧查找第二个空格并在该位置断开,但断开第二列和第三列几乎是不可能的,除非第二列始终保证以数字结尾(可能后面是括号或方括号)。好,但是我应该如何执行这项任务呢?我怎样才能去掉这部分文字。在搜索这第二个空间时,我还应该使用普通分割选项?它似乎是固定宽度长度。如何修剪此文本?你能发展你的想法吗?正确的文件是一个csv,但格式错误的文件,不包含逗号,只有空格之间,我想处理这个格式错误的文件。