C# 如何读取文本文件';垂直或按列显示数据

C# 如何读取文本文件';垂直或按列显示数据,c#,winforms,vertical-alignment,C#,Winforms,Vertical Alignment,如何逐列读取文本文件 检查我的新代码:我可以使用text.split(“”) 但是,文件如何才能按列方式读取呢?假设一个文件包含许多行和列,但我能够水平读取数据/值。下面的代码就是我可以执行的! 请参阅下面的代码:- private void Form1_Load(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) {

如何逐列读取文本文件

检查我的新代码:我可以使用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;
    }
    }
    }

文本文件包含一个字符序列,由换行符和可能用作分隔符的其他字符(通常是逗号或分号)分隔

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

在plain.Net中没有逐列读取的方法

所以你应该:

  • 逐行读取文件
  • 使用分隔符处的
    string.split()
    将每行拆分为字段/列
  • 仅访问感兴趣的列

  • 首先,最好发布您尝试过的代码、期望的结果和您遇到的问题。StackOverflow不是代码编写服务

    然而,有时候你确实不知道从哪里开始。这里有一些提示

  • 您必须在中读取整个文件,可能需要使用类似于
    StreamReader
    的工具
  • 您可以将第一行解析为列名。使用
    StreamReader.ReadLine()
  • 您需要创建某种类型的类/对象来存储和访问数据
  • 获得列名后,继续将以下行解析为正确的数组
  • 这里有一个粗略的想法

    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;
    
    使用(StreamReader sr=new StreamReader(“C:\\my\\file\\location\\text.csv”))
    {
    字符串头=sr.ReadLine();
    List HeaderColumns=新列表(header.split(“,StringSplitOptions.RemoveEmptyEntires));
    myModelClass.Header=标题列;
    
    等等


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

    您可以逐行读取文件,拆分该行并做您想做的任何事情。

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

    也许这会帮助你:

    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]);
                } 
            }
        }
    
    publicstaticvoidreadfile(字符串路径)
    {
    List Col1=新列表();
    List Col2=新列表();
    List Col3=新列表();
    使用(StreamReader sr=新StreamReader(路径))
    {
    while(sr.EndOfStream)
    {
    字符串头=sr.ReadLine();
    var值=页眉分割(“”);
    Col1.添加(值[0]);
    Col2.添加(值[1]);
    Col3.添加(值[2]);
    } 
    }
    }
    
    首先,如果你真的付出了一些努力,你会得到更多帮助。其次,我会将该文件解析为一个自定义类的集合,公开要使用的列中的值。但是你没有提供足够的详细信息来知道这是否是最好的过程。不需要文本文件的屏幕截图这三列和四行。不难创建。嗨。我添加了我的代码。检查一下。在简单的表单应用程序中,它读取文本文件的全部数据,但我需要按列读取。可能是一个按钮添加将在单独的窗口/对话框中提供单列数据。但问题是我不知道如何读取文本文件的数据我和其他一些人提出了一些方法来实现这一点。解析文件,将其加载到一个可以轻松使用的对象中,然后使用该对象设置各种显示元素的内容
    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]);
                } 
            }
        }