如何垂直或逐列读取文本文件的数据

时间:2015-05-04 12:38:33

标签: c# winforms vertical-alignment

我们如何逐列读取文本文件。

检查我的新代码:我可以使用 text.split('')逐行读取数据 但是如何将文件作为列方式读取?让我们假设一个文件包含多少行和列,但我能够水平读取数据/值。您在下面看到的代码就是我可以执行的代码! 请参阅下面的代码: -

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {


        string text = "";
        text = textBox1.Text;

        string[] arr = text.Split(' ');
        textBox2.Text = arr[5];
        textBox3.Text = arr[8];
    }

    private void button3_Click(object sender, EventArgs e)
    {


        string file_name = "c:\\Excel\\count.txt";
        string txtline = "";

        System.IO.StreamReader objreader;
        objreader = new System.IO.StreamReader(file_name);

        do
        {
            txtline = txtline + objreader.ReadLine() + "\r\n";
            txtline = txtline + objreader.ReadToEnd() + "";
            this.textBox1.Text = "subzihut";

        }
        while (objreader.Peek() != -1);
        textBox1.Text = txtline;
        objreader.Close();

        }

    private void button2_Click(object sender, EventArgs e)
    {
     textBox4.Text = textBox2.Text + " " + textBox3.Text;
    }
    }
    }

4 个答案:

答案 0 :(得分:1)

文本文件包含一系列字符,由换行符分隔,可能还有其他字符用作分隔符(通常是逗号或半字母)。

当您阅读文件时,您只需阅读此字符流。有一些辅助函数可以逐行读取这样的文件(使用换行符作为分隔符)。

在普通的.Net中,没有任何方法可以逐列阅读。

所以你应该:

  1. 逐行阅读文件
  2. 使用string.Split()分隔符
  3. 将每一行拆分为字段/列
  4. 仅访问感兴趣的列

答案 1 :(得分:1)

您可以逐行读取文件,分割线条并执行任何操作。

var lines = File.ReadLines(@"c:\yourfile.txt");
foreach(var line in lines)
{
    var values = line.Split(' ');
}

答案 2 :(得分:0)

首先,最好发布您尝试过的代码,所需的结果以及您遇到的问题。 StackOverflow不是代码编写服务。

但是,有时你不知道从哪里开始。这里有一些指示。

  1. 您必须阅读整个文件,可能使用StreamReader
  2. 之类的内容
  3. 您可以将第一行解析为列名。使用StreamReader.ReadLine()获取第一行,然后对其进行一些简单的字符串解析。
  4. 您需要创建某种类/对象来存储和访问您的数据。
  5. 获得列名后,继续将以下行解析为正确的数组。
  6. 这里有一些粗略的想法

    using(StreamReader sr = new StreamReadeR("C:\\my\\file\\location\\text.csv"))
    {
        string header = sr.ReadLine();
        List<string> HeaderColumns = new List<string>(header.split(" ", StringSplitOptions.RemoveEmptyEntires));
        myModelClass.Header = HeaderColumns;
    

    等...

    您也可以考虑使用某种字典来按标题名称和索引访问列。

答案 3 :(得分:0)

也许这会对你有所帮助:

public static void ReadFile(string path)
    {
        List<string> Col1 = new List<string>();
        List<string> Col2 = new List<string>();
        List<string> Col3 = new List<string>();
        using (StreamReader sr = new StreamReader(path))
        {
            while (sr.EndOfStream)
            {
                string header = sr.ReadLine();
                var values = header.Split(' ');
                Col1.Add(values[0]);
                Col2.Add(values[1]);
                Col3.Add(values[2]);
            } 
        }
    }