将 CSV 文件中的行跳过到某个单词 C#
Posted
技术标签:
【中文标题】将 CSV 文件中的行跳过到某个单词 C#【英文标题】:skipping Rows in a CSV file to a certain word C# 【发布时间】:2021-09-26 01:53:59 【问题描述】:我是 C# 编码的新手,我真的试图在任何论坛上找到答案。我正在使用 CSVHelper 读取 CSV 文件,并且我想从文件开头跳过一定数量的行到某个单词。现在我的代码给出了以下错误消息: System.ObjectDisposedException:“无法从关闭的 TextReader 中读取。”请帮帮我:
private void cmdLoad_Click(object sender, EventArgs e)
OpenFileDialog OFDReader = new OpenFileDialog()
;
if (OFDReader.ShowDialog() == DialogResult.OK)
txtbox.Text = OFDReader.FileName;
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
Delimiter = ";", // Set delimiter
HasHeaderRecord = true,
//ShouldSkipRecord = (row) => row.Record[0].Contains("Date/Time"),
;
using (var reader = new StreamReader(OFDReader.FileName))
using (var csv = new CsvReader(reader, config))
//search for Line to start reader
string record = "Date/Time";
while (csv.Read())
if (csv.Read().Equals(record))
csv.Read();
csv.ReadHeader();
break;
using (var dr = new CsvDataReader(csv))
var dt = new DataTable();
dt.Load(dr);
dataGridView1.DataSource = dt; // Set datagridview source to datatable
【问题讨论】:
看看这个:***.com/questions/11035977/… 感谢您的支持。 【参考方案1】:我相信您只需要在找到“日期/时间”文本时跳出while (csv.Read())
。 CsvReader
将从那里完成剩下的工作。
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
Delimiter = ";", // Set delimiter
HasHeaderRecord = true
;
using (var reader = new StreamReader(OFDReader.FileName))
using (var csv = new CsvReader(reader, config))
//search for Line to start reader
string record = "Date/Time";
while (csv.Read())
if (csv.Context.Parser.RawRecord.Trim() == record)
break;
using (var dr = new CsvDataReader(csv))
var dt = new DataTable();
dt.Load(dr);
dt.Dump();
【讨论】:
以上是关于将 CSV 文件中的行跳过到某个单词 C#的主要内容,如果未能解决你的问题,请参考以下文章