【问题标题】:how to make readfield read next field如何使 readfield 读取下一个字段
【发布时间】:2018-10-30 22:57:12
【问题描述】:

我的 csv 文件包含 8 列和 300k 行。这是我的 csv 文件的示例 "0195153448";"古典神话";"Mark P. O. Morford";"2002";"牛津大学出版社";"http://images.amazon.com/images/P/0195153448.01.THUMBZZZ.jpg";"http://images.amazon.com/images/P/0195153448.01.MZZZZZZZ.jpg";"http://images.amazon.com/images/P/0195153448.01.LZZZZZZZ.jpg"
"0002005018";"Clara Callan";"Richard Bruce Wright";"2001";"HarperFlamingo Canada";"http://images.amazon.com/images/P/0002005018.01.THUMBZZZ.jpg";"http://images.amazon.com/images/P/0002005018.01.MZZZZZZZ.jpg";"http://images.amazon.com/images/P/0002005018.01.LZZZZZZZ.jpg"

现在我有这段代码可供阅读

string path = @"C:\Users\SEMRUK\Desktop\exceller\kitaplik.csv";
public DataTable GetDataTabletFromCSVFile(string PathFile)
    {
        DataTable csvData = new DataTable();

        TextFieldParser csvReader = new TextFieldParser(PathFile);

                csvReader.SetDelimiters(new string[] {";"});
                csvReader.HasFieldsEnclosedInQuotes = true;
                string[] colFields = csvReader.ReadFields();
                foreach (string column in colFields)
                {
                    DataColumn datecolumn = new DataColumn(column);
                    datecolumn.AllowDBNull = true;
                    csvData.Columns.Add(datecolumn);
                }               
                string[] fieldData = csvReader.ReadFields();
                while (!csvReader.EndOfData)
                {
                    for (int i = 0; i < fieldData.Length; i++)
                    {
                        if (fieldData[i] == "")
                        {
                            fieldData[i] = null;
                        }
                MessageBox.Show(fieldData[i]);
                    }
            csvData.Rows.Add(fieldData);

        }
        return csvData;
    }

这样我可以读取前 8 行。但之后我无法读取任何内容。它只读取第 8 行。我如何告诉代码它也应该在选项卡之后读取。我尝试将 \t 添加到setdelimiters 但没有用。有什么建议吗?

【问题讨论】:

    标签: c# textfieldparser


    【解决方案1】:
    static void Main(string[] args)
            {
    
    
                string path = "your_file_path";
    
                string text = System.IO.File.ReadAllText(path);
    
                string[] parsedText= text.Split(';');
    
                foreach (var item in parsedText)
                {
                    //do some
                }
    
            }
    

    【讨论】:

    • 20 小时的互联网搜索并没有给我你所做的这个简单的答案。如此简单但很难找到。谢谢你的好先生。很多爱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    相关资源
    最近更新 更多