标签: csvhelper

无法加载文件或程序集“System.Threading.Tasks.Extensions,版本 = 4.2.0.0

我最近在尝试使用该库时安装了 CsvHelper ( https://joshclose.github.io/CsvHelper/ ),但出现以下错误:

无法加载文件或程序集“System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

在我的 app.config 我有绑定重定向:

 <dependentAssembly>
            <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
        </dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

同样在我的项目中,我参考了

\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll

它的版本是 4.2.0.1 我不知道为什么它仍然试图加载库的 4.2.0.0。

我的项目正在运行 .net 4.7.2

c# assemblybinding assembly-binding-redirect csvhelper

15
推荐指数
3
解决办法
1万
查看次数

如何使用CsvHelper将选定的类字段写入CSV?

CsvHelper用来读取和写入CSV文件很棒,但我不明白如何只写入选定的类型字段.

说我们有:

using CsvHelper.Configuration;

namespace Project
{
    public class DataView
    {
        [CsvField(Name = "N")]
        public string ElementId { get; private set; }

        [CsvField(Name = "Quantity")]
        public double ResultQuantity { get; private set; }

        public DataView(string id, double result)
        {
            ElementId = id;
            ResultQuantity = result;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们希望CsvField从当前生成的CSV文件中排除"数量" ,例如:

using (var myStream = saveFileDialog1.OpenFile())
{
    using (var writer = new CsvWriter(new StreamWriter(myStream)))
    {
        writer.Configuration.Delimiter = '\t';
        writer.WriteHeader(typeof(ResultView));
        _researchResults.ForEach(writer.WriteRecord);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用什么来动态地从CSV中排除类型字段?

如果有必要,我们可以处理生成的文件,但我不知道如何删除整个CSV列CsvHelper.

.net c# csv csvhelper

12
推荐指数
4
解决办法
1万
查看次数

CsvHelper只获取标题行

我正在尝试读取上传的CSV文件,在对数据做任何事情之前,我需要检查第一个标题名称,以确保它是正确的文件.我一直试图找到一种方法,但读者会跳到第二行.有没有直接的方法来选择其中一个标题并检查其值?

csvhelper

12
推荐指数
2
解决办法
6432
查看次数

CsvHelper - 将多列读入单个列表

我正在使用CSVHelper读取大量数据

我想知道是否可以读取最后一n列并将它们转换为列表

"Name","LastName","Attribute1","Attribute2","Attribute3"
Run Code Online (Sandbox Code Playgroud)

并将数据塑造成这样的东西

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public IList<string> Attributes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望一步到位,我确信我可以有一个中间步骤,我放入一个具有匹配属性属性的对象但是在一个人上做它会很好

c# csvhelper

11
推荐指数
1
解决办法
1万
查看次数

CSV文件中不存在字段'workOrder'

我有一个包含多行的CSV文件,每行的工作订单号都在标题为"WONo"的列下.

这就是我正在做的事情:我创建了一个名为Job的类,只有一个字段.

class Job
{
    public int workOrder { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个JobMap类

class JobMap : CsvClassMap<Job>
{
    public override void CreateMap()
    {
        Map(m => m.workOrder).Name("W.O.No.");
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,这是我的主要代码

StreamReader file = new StreamReader(filePath);
var csv = new CsvReader(file);
var record = csv.GetRecords<Job>().ToList();
Run Code Online (Sandbox Code Playgroud)

无论出于何种原因,我都会收到错误消息

CSV文件中不存在字段'workOrder'.

我在这做错了什么?

c# csv csvhelper

11
推荐指数
1
解决办法
7703
查看次数

在CsvHelper.CsvWriter中手动添加标头

我正在使用CsvHelper类将行写入DataTablecsv文件.代码有效,但我无法编写标题.

如何在不创建类映射的情况下手动添加标题?

http://joshclose.github.io/CsvHelper/

DataTable dt = GetDataTableFromDB();

System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter( memoryStream );
CsvHelper.CsvWriter writer = new CsvHelper.CsvWriter( streamWriter );

foreach ( DataColumn column in properties.Columns )
    writer.WriteHeader( column.ColumnName );    //<--- How do I write to column

foreach ( DataRow row in dt.Rows )
{
    foreach ( object item in row.ItemArray )
        writer.WriteField( item.ToString() );

    writer.NextRecord();
}
Run Code Online (Sandbox Code Playgroud)

c# csvhelper

11
推荐指数
2
解决办法
2万
查看次数

cSON中的JSON字符串到CSV和CSV到JSON的转换

我在我的asp.net web API项目中使用JSON/CSV文件,并尝试使用CSVHelperServiceStack.Text库,但无法使其工作.

包含数组的JSON文件是动态的,可能包含任意数量的字段

我使用streamreader读取文件,然后需要将其转换为CSV文件,以便最终用户下载.

示例文件文本

[{"COLUMN1":"a","COLUMN2":"b","COLUMN3":"c","COLUMN4":"d","COLUMN5":"e"},
 {"COLUMN1":"a","COLUMN2":"b","COLUMN3":"c","COLUMN4":"d","COLUMN5":"e"}]
Run Code Online (Sandbox Code Playgroud)

JSON到CSV

public static string jsonStringToCSV(string content)
{
    var jsonContent = (JArray)JsonConvert.DeserializeObject(content);

    var csv = ServiceStack.Text.CsvSerializer.SerializeToCsv(jsonContent);
    return csv;
}
Run Code Online (Sandbox Code Playgroud)

这不会导致我的CSV数据

在此输入图像描述

然后一些文件是带有逗号或制表符的分隔符类型,我想利用CSVHelper将CSV字符串动态转换为IEnumerable

public static IEnumerable StringToList(string data, string delimiter, bool HasHeader)
{
    using (var csv = new CsvReader(new StringReader(data)))
    {
         csv.Configuration.SkipEmptyRecords = true;
         csv.Configuration.HasHeaderRecord = HasHeader;
         csv.Configuration.Delimiter = delimiter;

         var records = csv.GetRecords();
         return records;
     }
}
Run Code Online (Sandbox Code Playgroud)

c# csv json csvhelper

11
推荐指数
3
解决办法
5万
查看次数

如何将CsvHelper记录添加到DataTable以用于SqlBulkCopy到数据库

我试图用CsvHelper读取CSV文件,将每个记录加载到DataTable,然后使用SqlBulkCopy将数据插入数据库表.使用当前代码,在向DataTable添加行时会出现异常.例外情况是:"无法将'MvcStockAnalysis.Models.StockPrice'类型的对象强制转换为'System.IConvertible'.不能存储在日期列中.预期的类型是DateTime."

示例CSV文件来自yahoo finance.例如:http://ichart.yahoo.com/table.csv?s = MMM&a = 0&b = 1&c = 2010&d = 0&e = 17&f = 2014&g = d&signore = .cv

CSV文件包含以下标题:日期打开高低关闭音量调整关闭

我正在将CSV文件读入的模型:

namespace MvcStockAnalysis.Models
{
    using System;
    using System.Collections.Generic;

    public partial class StockPrice
    {
        public int Id { get; set; }
        public System.DateTime Date { get; set; }
        public int CompanyId { get; set; }
        public double High { get; set; }
        public double Low { get; set; }
        public double Close { get; set; } …
Run Code Online (Sandbox Code Playgroud)

.net csv datatable sqlbulkcopy csvhelper

10
推荐指数
3
解决办法
1万
查看次数

CsvHelper ConvertUsing不改变输出

我正在尝试使用CsvHelper库的ConvertUsing方法(v 2.4.0).

我已经阅读了有关ConvertUsing的文档但无法使其工作.

我正在使用一个简单的类:

public class Test
{
    public long Id { get; set; }
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有了这个ClassMap:

public class TestClassMap : CsvClassMap<Test>
{
    public override void CreateMap()
    {
        Map(m => m.Id).Name("id").ConvertUsing(row => 11111);
        Map(m => m.Title).Name("title").ConvertUsing(row => row.GetField("title") + " 123");
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用这些代码的代码创建了一个类的实例,然后将其写入CSV:

var test = new Test() { Id = 99, Title = "Test title" };

using (var streamWriter = new StreamWriter("test.csv"))
{ …
Run Code Online (Sandbox Code Playgroud)

c# csv export-to-csv csvhelper

10
推荐指数
2
解决办法
5278
查看次数

CsvHelper忽略标题名称的大小写

我有一些课

 public class Import
{
    public DateTime Date { get; set; }
    public string Category { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在csv文件中,标题名称可以是小写.如何在阅读文件时忽略大小写?

 var reader = new StreamReader(@"///");
        var csv = new CsvReader(reader);

        var records = csv.GetRecords<Import>().ToList();
Run Code Online (Sandbox Code Playgroud)

c# csvhelper

10
推荐指数
2
解决办法
4246
查看次数