【发布时间】:2021-06-08 12:18:30
【问题描述】:
我有这个 csv 文件,我需要能够读取它,但我无法让它工作。这是csv 和picture of csv。我不确定问题是什么,我一直在关注教程,所以我猜测它可能与 csv 文件及其使用的间距有关。我无法更改 csv 中的任何内容。 我尝试将 Name 属性添加到类以及索引属性。
CsvHelper 版本:27.1.0
public static void Main(string[] args)
{
using (var streamReader = new StreamReader(@"C:\Users\Adam\Desktop\C#\price_detail.csv"))
{
using (var csvReader = new CsvReader(streamReader, CultureInfo.InvariantCulture))
{
var records = csvReader.GetRecords<SKU>();
}
}
}
public class SKU
{
//[Name("PriceValueId")]
public string PriceValueId { get; set; }
//[Name("Created")]
public DateTime Created { get; set; }
//[Name("Modified")]
public DateTime Modified { get; set; }
//[Name("CatalogEntryCode")]
public string CatalogEntryCode { get; set; }
//[Name("MarketId")]
public string MarketId { get; set; }
//[Name("CurrencyCode")]
public string CurrencyCode { get; set; }
//[Name("ValidFrom")]
public DateTime ValidFrom { get; set; }
//[Name("ValidUntil")]
public DateTime ValidUntil { get; set; }
//[Name("UnitPrice")]
public decimal UnitPrice { get; set; }
}
调试输出:
Header with name 'PriceValueId'[0] was not found.
Header with name 'Created'[0] was not found.
Header with name 'Modified'[0] was not found.
Header with name 'CatalogEntryCode'[0] was not found.
Header with name 'MarketId'[0] was not found.
Header with name 'CurrencyCode'[0] was not found.
Header with name 'ValidFrom'[0] was not found.
Header with name 'ValidUntil'[0] was not found.
Header with name 'UnitPrice'[0] was not found.
If you are expecting some headers to be missing and want to ignore this validation, set the configuration HeaderValidated to null. You can also change the functionality to do something else, like logging the issue.
IReader state:
ColumnCount: 0
CurrentIndex: -1
HeaderRecord:
["PriceValueId Created Modified CatalogEntryCode MarketId CurrencyCode ValidFrom ValidUntil UnitPrice"]
IParser state:
ByteCount: 0
CharCount: 101
Row: 1
RawRow: 1
Count: 1
RawRecord:
PriceValueId Created Modified CatalogEntryCode MarketId CurrencyCode ValidFrom ValidUntil UnitPrice
【问题讨论】:
-
看起来您的 CSV 是 TAB 分隔的。您可以在此处指定另一个分隔符:stackoverflow.com/questions/60474975/…
-
看来 csvReader.Configuration.Delimiter 现在是只读的,不能这样更改
-
谢谢!最后一个链接有效。不,我只需要弄清楚当 DateTime 为 Null 时如何处理它。