[英]How to skip to last table/dataset of csv file csvhelper c#
我的 csvFile 的結構如下:
val1,val2,val3
1,2,4
.
.
val1,val2,val3
3,7,8
和
val1,val2,val3
1,2,4
.
.
val1,val2,val3
3,7,8
.
.
val1,val2,val3
11,5,9
為此,csv 接頭都具有相同的名稱。
有了這個,我的問題是,我將如何一直跳到最后一個表/數據集? 所以要獲得表格:
//first csvFile
val1,val2,val3
3,7,8
//second csvFile
val1,val2,val3
11,5,9
到目前為止我所做的是實施
for (var i = 0; i < 7; i++)//skip number of lines
{
csv.Read();//function here skips line to get to real header
}
csv.Read();
csv.ReadHeader();
有了這個,我可以一直向下跳過行,但前提是我知道到達我想要的行的間距,所以它是非常特定於文件的。 它將如何實現,以便您始終可以在不考慮行數的情況下獲得 csvFile 的最后一個 Header 值?
我也在使用開源庫 CsvHelper
CsvHelper 將從 Reader 讀取。 讀者可以從字符串中讀取。 因此,我們可以像這樣預處理文件:
var sb as new StringBuilder();
foreach(var line in File.ReadLines("path"){
if(line == "val1,val2,val3")
sb.Clear();
sb.AppendLine(line);
}
using (var reader = new StringReader(sb.ToString()))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var records = csv.GetRecords<...>();
}
如果val1,val2,val3
會改變它們的順序、表示、空格等,那么你可以將標題變成一個字符串數組,然后詢問一行是否包含所有標題:
var headers = "val1 val2 val3".Split();
//and in the loop
if(headers.All(h => line.Contains(h)))
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.