在讀取 CSV 檔案時,如何配置 CsvHelper 以強制每行沒有在標題中找不到的額外列?CsvConfiguration我在或 下找不到任何明顯的財產CsvHelper.Configuration.Attributes。
背景關系:在我們的 CSV 檔案格式中,最后一列是字串描述,當描述包含逗號時,我們的用戶(使用純文本編輯器)有時會忘記參考。這種“原始”逗號會導致該行具有額外的列,并且讀入軟體的預期描述會省略第一個原始逗號之后的描述。我想檢測到這一點并拋出一個例外,向用戶建議他們可能忘記參考描述單元格。
看起來CsvConfiguration.DetectColumnCountChanges可能是相關的,但目前 29.0.0 庫缺少任何 IntellisenseCsvConfiguration屬性描述,所以我不知道如何使用它。
其他 CSV 庫的類似資訊:
- 使用LINQtoCSV,這是通過設定
IgnoreUnknownColumns = false.CsvFileDescription - 當一行中有太多列時,Lumenworks CSV 決議器會出錯嗎?
uj5u.com熱心網友回復:
你在正確的軌道上CsvConfiguration.DetectColumnCountChanges。
void Main()
{
var config = new CsvConfiguration(CultureInfo.InvariantCulture)
{
DetectColumnCountChanges = true
};
using (var reader = new StringReader("Id,Name\n1,MyName\n2,YourName,ExtraColumn"))
using (var csv = new CsvReader(reader, config))
{
try
{
var records = csv.GetRecords<Foo>().ToList();
}
catch (BadDataException ex)
{
if (ex.Message.StartsWith("An inconsistent number of columns has been detected."))
{
Console.WriteLine("There is an issue with an inconsistent number of columns on row {0}", ex.Context.Parser.RawRow);
Console.WriteLine("Row data: \"{0}\"", ex.Context.Parser.RawRecord);
Console.WriteLine("Please check for commas in a field that were not properly quoted.");
}
}
}
}
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523232.html
上一篇:使用tfilelist或tfiledelimited我如何遍歷列A、列B組合的串列并存盤在tjava中以用于tdbinput
