我有一些简单的代码,可以从.csv文件加载DataTable,如果它包含头的话.现在,我需要从没有头文件的文件中加载DataTable.我希望设置HasHeaderRecord=FALSE,并且将使用缺省标头(Field1、Field2,...)创建DataTable.情况并非如此,我可以看到CsvReader读取了记录,但由于没有头,所以在DataTable中没有创建列.这看起来应该很简单,我错过了什么?此外,由于文件是动态的,因此不能使用类映射对其进行硬编码或加载.

var dt = new DataTable();

        var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            HasHeaderRecord = false
        };

        var enc = System.Text.ASCIIEncoding.UTF8;

        using (var reader = new StreamReader(FileName, enc, true))
        using (var csv = new CsvReader(reader, csvConfig))
        {
            // Do any configuration to `CsvReader` before creating CsvDataReader.
            using (var dr = new CsvDataReader(csv))
            {
                dt.Load(dr);
            }
        }

推荐答案

就像你可以在这里阅读的那样,图书馆里似乎有一个虫子: https://github.com/JoshClose/CsvHelper/issues/1240

由于他们在过go 的两年里没有修复它,谁知道他们是否会这样做.在此之前,您可以使用下面的代码,它应该可以按预期工作:

using (var reader = new StreamReader(FileName, enc, true))
using (var csv = new CsvReader(reader, csvConfig))
using (var dr = new CsvDataReader(csv))
{
    while (dr.Read())
    {
        if (dt.Columns.Count == 0)
        {
            for (int i = 0; i < dr.FieldCount; i++)
                dt.Columns.Add();
        }

        DataRow row = dt.NewRow();
        for (int i = 0; i < dr.FieldCount; i++)
            row[i] = dr.GetString(i);
        dt.Rows.Add(row);
    }
}

Csharp相关问答推荐

Rx.Net -当关闭序列被触发时如何聚合消息并发出中间输出?

在依赖性注入和继承之间进行 Select

C#自定义字典与JSON(de—)serialize

为什么EF Core 6会针对null验证Count(*)?

CS0103 dlibdotnet和www.example.com facerect不在上下文中

与C#中的Zip列表并行

JsonSerializer.Deserialize<;TValue>;(String,JsonSerializerOptions)何时返回空?

用于管理System.Text.Json中的多态反序列化的自定义TypeInfoResolver

Linux Docker上的.NET6在某个时间抛出后,在加密操作期间发生System.Security.Cryptography.CryptographicException:错误

Polly重试URL复制值

我可以查看我们向应用程序洞察发送了多少数据吗?

Azure函数-在外部启动类中生成配置时出错

正在从最小API-InvocationConext.Arguments中检索参数的FromBodyAttribute

为什么Swashbakle/Swagger在参数中包含变量名?

在ObservableCollection上使用[NotifyPropertyChangedFor()]源代码生成器不会更新UI

在C#和HttpClient中使用REST API

客户端/服务器RPC如何处理全局变量?

单位中快照的倾斜方向

ASP.NET Core 7空字符串

部署Aspnet Blazor服务器时出现未处理的Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]异常