问题标签 [csvhelper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 CsvHelper.CsvWriter 中手动添加标头
我正在使用CsvHelper
类将行写入DataTable
csv 文件。该代码有效,但我无法编写标题。
如何在不创建类映射的情况下手动添加标题?
c# - 如何将 CsvHelper 配置为始终在其 CSV 输出中引用特定字段?
我正在使用CsvHelper包将我的 C# 模型写入 Csv。我正在使用流利的类映射(从 CsvClassMap 继承)将我的字段定义为属性映射。
我遇到的问题是,某些属性值看起来像是要出类拔萃的日期。例如“2 - 4”。我希望最终用户使用 excel 来查看这些 CSV。我不希望这些值显示为日期,所以我希望 CsvHelper 用引号括住这个字段。但是,我只想要这个被引号包围的字段。还有其他字段包含我想要解释的数据(例如日期)。我可以配置我的映射来指定这个字段应该被引用吗?我玩过使用类型转换器,但这显然是错误的方法,因为这是转换 VALUE 而不是指示如何格式化字段。
c# - 将动态 csv 文件映射到 EF 实体
我一直在使用 EF 并使用 CsvHelper 将测试输出直接映射到数据库实体以进行快速存储。我现在遇到了一个跟踪 cpu 核心、端口 io 和核心/端口配对数据的性能监视器的问题。我可以有任意数量的核心和任意数量的端口,这些在核心/端口配对中相乘。输出是 csv 格式,我无法控制这种输出格式。
我需要在这个动态列大小的 csv 中有效地扫描到实体模型。我希望我可以用最少的操作将列映射到各种表。
EF 的 POCO 配对示例:
这映射到的大规模简化的标题行(相信我,它被解释了......我通常为单个端口测试处理 200 多列的集合,这就是为什么我希望找到更好的映射方式) .
现在我看到的唯一方法是预处理标题行以将列解析成集合(按索引映射),通过 csv 文件进行迭代。这有很多开销,并且会涉及映射和自动映射。标题在多个位置更改文本,这使得映射需要关闭标题中的子字符串。
上面的 CSV 标头仅是模式示例: 包含的 csv 标头只是问题的精简模式。如果我更改端口的品牌/型号,我会得到端口的新名称而不是Port。正在测试的下一个系统可能每个 CPU 有 12 个内核和/或四个端口。从字面上看,现在我面前有一个数据集,有 4 个 CPU @ 12 个内核,4 个端口,并且配对最终接近 1200 列。
c# - 使用 CsvHelper 将 CSV 中的所有值读入列表
所以我一直在阅读我不应该编写自己的 CSV 读取器/写入器,所以我一直在尝试使用通过 nuget 安装的 CsvHelper 库。CSV 文件是灰度图像,行数为图像高度,列数为宽度。我想将值逐行读取到单个List<string>
orList<byte>
中。
我到目前为止的代码是:
但是allValues.ToList<string>()
抛出一个:
用户代码未处理 CsvConfigurationException
CsvHelper.dll 中出现“CsvHelper.Configuration.CsvConfigurationException”类型的异常,但未在用户代码中处理
附加信息:不能自动映射继承 IEnumerable 的类型。您是否不小心调用了作用于单个记录的 GetRecord 或 WriteRecord,而不是调用作用于记录列表的 GetRecords 或 WriteRecords?
GetRecords
可能期待我自己的自定义类,但我只是想要一些原始类型或字符串的值。另外,我怀疑整行都被转换为单个字符串,而不是每个值都是单独的字符串。
csvhelper - CsvHelper:如何从给定的 csv 文件中检测分隔符
我正在使用 CsvHelper 将数据读/写到 Csv 文件中。现在我想解析 csv 文件的分隔符。请问我怎样才能得到这个?
我的代码:
我总是得到分隔符是“,”,但实际上在 csv 文件中,分隔符是“\t”。
c# - CSVReader 在映射到字符串类型字段时将数字/常规字段中的文本读取为空字符串
我在数字/一般类型的 csv 字段中有文本内容。在CSVClassMap
我有字段映射到一个字符串。因此,它将这个 CSV 字段读取为空字符串。我正在阅读 csv 记录如下
我的 CSVClassMap 代码如下
我的 CSV 字段映射到的班级如下。
这个想法是让Credential
csv 阅读器按原样读取 CSV 字段(常规或数字类型)的内容并自己进行验证。由于我的要求,我无法将 C# 字段更改EmployerCredential
为整数而不是字符串。如何让 CSV 阅读器不跳过Credential
字段的内容,即使它是数字或通用类型并将其映射到我的字符串字段EmployerCredential
?例如:Credential
CSV 中的字段可以是 Numeric 类型,内容可以是my sample text
. 如何将其存储到我的 .net 字段中EmployerCredential
,而忽略文本内容来自数字类型 csv 字段的事实。
经过更多研究后,我发现我需要使用自定义 TypeConverter,但我找不到有关如何将 CSV 字段类型General
或numeric
C# 类型字符串转换的指针。
c#-4.0 - 转换为 ILookup 的 CSV 文件
供应商每晚向我们提供一个 csv 文件。我们需要获取该 csv,提取一些列,然后将它们导入我们的内部应用程序。我们收到的 csv 看起来有点像这样:
StudentId, GradYear, 2014 Thing1, 2014 Thing2, 2015 Thing1, 2015 Thing2
依此类推,似乎永久添加列。当我第一次看到这个 csv 时,我的第一个倾向是将它转换为 2 列:因此:
我的倾向是使用 csvHelper 来读取这个文件,并通过构造一个 ILookup 来转置它。所以我会有一个看起来像这样的查找:
键是 StudentId,而 KeyValuePair 是列标题:单元格值。我几乎可以使用字典来解决这个问题,并使用字典键的计数器,但我无法以 StudentId 作为键来跳转到查找。这是我构建字典的方式:
我可以使用以下代码查看记录。我需要做这个 foreach 的一个版本来进行查找吗?或者,我应该只使用带有一些“如果它是'StudentId'那么让它成为关键吗?
大多数情况下,我想知道我是否在正确的轨道上。当我最终得到任何供应商数据对象时,我将需要遍历它,将学生与我们的学生记录进行比较,并决定更新我们应用程序中的记录。
c# - Reading multiple classes from single csv file using CsvHelper
I've been using Josh Close' CsvHelper a bit recently to parse CSV files, I quite like the fluent api for class mapping.
I'm trying to map a csv file which contains multiple record types, the file structure is
Is this something which can be handled by CsvHelper? I've writen a custom parser which basically works but all it really does is filter out the Header and Data fields for a specific class - I'd really like to be able to do something like
And read the file in one pass? Is this possible or am I using the wrong parser?
Regards Dave
c# - 跳过 csv 文件的第一行,因为它的文件格式为空行
下面是我的通用方法,它返回一个从 csv 文件上传 Stream 的对象列表,但我想跳过第一行,因为只有 csv 的第二行有标题。请帮我修改此代码以从第二行获取