我的CSV文件看起来像
Metals:,E10
Al,0.1906
Ca,0.1132
Co,0.01951
Cu,0.5824
Cu,0.02383
Fe,0.03828
K,0.09577
Li,0.03024
Mg,0.007145
Na,0.1833
Ni,0.3236
Pb,0.0005787
Ti,0.4931
Tl,0.001887
Zn,0.07644
GLot,id,Slot,Scribe,Diameter,MPD,SResistivity,SThickness,TTV,LTV,Warp,Bow,S_U_A,Ep,Epi_L,Epi_Layer,Epi_Layer_2,EThick,E2thick,E2Dope,E2DopeT,E2DopeMax,E2DopeMin
31075046-001,XFB-LE00674.CP10023+001-12,1,22C1285,149.98,0,0.0217,334.71,1.91,1.03,5.35,-0.91,99.590582,1.0,1.0E18,9.8,1.12,9.9,9.6,9926193600000000,4.5574,10834500800000000,9551876800000000
我的代码如下所示:
namespace CsvHelperTest
{
class CsvHelperTester
{
static void Main(string[] args)
{
var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
{
HasHeaderRecord = false,
HeaderValidated = null,
IgnoreBlankLines = true,
MissingFieldFound = null,
AllowComments = true,
Comment = ';',
Delimiter = ",",
TrimOptions = TrimOptions.Trim,
PrepareHeaderForMatch = header => Regex.Replace(header.Header, ",", "\n"),
};
using (var streamReader = new StreamReader("C:\\Users\\eyoung\\Desktop\\parse test files\\XFB-1C2002A_62152_CoA.csv"))
{
using (var csvReader = new CsvReader(streamReader, csvConfig))
{
for (var i = 0; i < 1; i++)
{
csvReader.Read();
}
var records = csvReader.GetRecords<EpiDataNames>().ToList();
var table = records[0];
records.RemoveAt(0);
var columns = records;
using (var writer = new CsvWriter(Console.Out, CultureInfo.InvariantCulture))
{
//writer.WriteField(records[0].Type);
//writer.NextRecord();
//records.RemoveAt(0);
//foreach (var item in records.Select(r => r.Type))
//{
// writer.WriteField(item);
//}
//writer.NextRecord();
//foreach (var item in records.Select(r => r.Value))
//{
// writer.WriteField(item);
//}
//writer.NextRecord();
}
}
}
}
public class EpiDataNames
{
[Index(0)]
public string Type { get; set; }
[Index(1)]
public string Value { get; set; }
}
}
}
这很棒,因为它将第一组数据分成两列,"类型"和"值",然而,当第二组数据显示时,问题就出现了,有没有一种方法我只能读取第一块数据?当我试图省略最后那些标头时,它表现得很奇怪,并且删除了第一个数据块.
for (var i = 0; i < 1; i++)
{
csvReader.Read(); //this skips the first line of data
}
for (var i = 0; i > 18; i++)
{
csvReader.Read(); //I thought this would skip the last lines of data, but it doesn't.
}
第二个标头块的问题是,标头读起来像
Type | Value |
---|---|
GLot | Id |
当它应该是的时候,
Type | Value |
---|---|
Glot | 31075046-001 |
有什么主意吗?我在这一点上相当迷茫,我也应该开始,我没有控制编辑这个CSV文件之前.