问题标签 [filehelpers]

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.

0 投票
1 回答
7253 浏览

csv - 使用 FileHelpers 处理引号

我正在使用出色的 FileHelpers 库来导入许多 csv 文件,但遇到了问题。我有一个包含这三个示例行的 csv 文件

和这个(示例)类

问题QuoteMode.AlwaysQuoted在于 ID 122 将失败并出现错误:

字段“TEXT”不以第 3 行的 QuotedChar 开头。您可以使用 FieldQuoted(QuoteMode.OptionalForRead) 允许可选的带引号字段

切换到QuoteMode.OptionalForRead将失败,并出现 id 121 错误:

字段 TEXT 被引用,但被引用的 char: " not 就在分隔符之前(您可以使用 [FieldTrim] 来避免此错误)

那么如何处理包含没有引号的空字段和在文本中带有额外引号的带引号的文本字段的csv?

0 投票
1 回答
852 浏览

vb.net - FileHelpers 库 - 在转换上附加多条记录

使用 FileHelpers 库在 VB.NET 中做一些很棒的事情。使用从文本文件模板构建的动态类解析文件。我找不到的一件事:一种读取单个记录并确定它应该导致生成两条记录的方法。
当前代码:

Dim FromType As Type = Dynamic.ClassBuilder.ClassFromSourceFile(MyFilePath, MyDynamicTypeName, NetLanguage.VbNet)

Dim FromRecords() As Object FromRecords = FileHelpers.CommonEngine.ReadString(FromType, MyStringBuilder.ToString)

'... 也许这里的代码来检查某些值

昏暗引擎作为新的 FileTransformEngine(Of ITransformable(Of MyDestinationClass), MyDestinationClass)

' 理想情况下,在下一行中,我希望它能够查看某些条件并能够从单个源行生成两条记录。Dim PayRecords() As Object = engine.TransformRecords(FromRecords)

或者,如果有办法实现“ITransformable(Of ...”TransformTo() 并让它返回多条记录,我可以将逻辑放在动态类定义 TransformTo() 方法中。

想法?

这是我的源动态类的示例:

导入 FileHelpers ' 永远不会忘记

_ Public NotInheritable 类 MyDynamicClass 实现 ITransformable(Of MyDestinationClass) _ Public Name As String

公共函数 TransformTo() As MyDestinationClass 实现 ITransformable(Of MyDestinationClass).TransformTo Dim res As New MyDestinationClass

结束函数结束类

0 投票
1 回答
1583 浏览

.net - FileHelpers.dll 不忽略私有字段?

我已经成功使用了过去在这里找到的 FileHelpers.dll 库。在这个特定的案例中,去年的这个时候,我能够让类生成一些平面文件。由于某种原因,整整一年后,我回到我的旧项目,进行了一些修改,但现在它无法工作。我正在尝试使用 FixedLengthRecord 将一些数据写入文件,但现在它抱怨并非我的所有字段都具有 FixedField 属性。我检查了两倍、三倍、四倍,并且我所有的公共字段都具有必需的属性。在评论了我所有的方法和属性之后,我意识到它在抱怨我用来支持某些类的属性的一些私有字段。我必须在这些私有字段上应用 Ignore 属性才能使其正常工作。

我的问题是,这一次我能做些什么让它以这种方式表现?去年完全相同的类定义就像一个魅力,它忽略了我所有的私人领域。我正在使用 VS2008 和 FileHelpers.dll 版本 2.0.0.0(我去年使用的版本相同)。我尝试搜索文档并阅读一些源代码,但似乎找不到与此相关的任何内容。

0 投票
1 回答
781 浏览

.net - CSV 中的 FileHelpers 非标准嵌入式引号

我们正在使用 FileHelpers 解析 CSV 文件。不幸的是,我们遇到了将数据读入意外列的问题,因为 CSV 文件不会转义嵌入的引号:

而不是像往常一样将它们加倍:

我们不能随意更改 CSV 文件,因此必须按原样使用该文件。是否可以使用 FileHelpers 的库存版本来做到这一点?如果没有,是否有另一个开箱即用支持这种格式的 .NET CSV 库?

0 投票
3 回答
400 浏览

c# - 我有一个 CSV 文件,其中日期和时间分为 2 个字段。如何使用 FileHelpers 将 2 个字段聚合到相同的 DateTime 数据中?

我有一个 CSV 文件,其中日期和时间分为 2 个字段。如何使用 FileHelpers 将 2 个字段聚合到相同的 DateTime 数据中?

谢谢,

0 投票
1 回答
579 浏览

c# - 如何在使用 filehelpers 库导入 csv 文件时修复 ConvertException

我正在处理一个 csv 文件,由于用户输入错误,该文件偶尔会在 int 字段中包含文本。它是第一列,基本上它应该是一个唯一的记录 ID。我正在使用engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;

我宁愿做的只是忽略错误并用我选择的数值替换文本,并且仍然将该行包含在处理后的结果中。

我什至可以只保留我在文件定义类文件中声明的默认值的过程: [FieldNullValue(typeof(int), "0")]

另一件事是我正在确定在运行时要解析的文件,如下所示:

因此,我不确定如何在输入内容的上下文中实施 D.Lambert 的建议,<CustomersFixedWithNumericId>以便澄清有 7 个不同的文件定义(类文件)可以上传/处理,但它们都有 CustomerId 字段。

0 投票
3 回答
875 浏览

c# - 带有字符串参数的构造函数的通用约束?

如何创建一个泛型类,该类允许具有构造函数的类型采用一个字符串参数并实现 ToString 并实现两个函数,如下所示。

注意:ConvertBase 是 FileHelpers csv 阅读器库中的一个抽象类。我已经有与我在 csv 中的字段相对应的类,不想创建继承 ConvertBase 的单独类以便与 FileHelpres 库一起使用。

0 投票
1 回答
531 浏览

c# - 如何将 FileHelper.CSVEngine 绑定到 BeforeWriteRecord 事件

使用FileHelpers.CsvEngine.DataTableToCsv. 我无法BeforeWriteRecord像以前那样挂钩 "" 事件FileHelperEngine。是否有可能在 CSVEngine 类中挂钩操作。

0 投票
1 回答
7754 浏览

c# - 使用 FileHelpers 导入 CSV 文件时出现问题

我正在使用 FileHelpers 库将 csv 文件导入数据库表。我在导入文件头中的字段以数字 ('800NUMBER') 开头的文件时遇到问题。

要导入的代码:
DataTable data = CommonEngine.CsvToDataTable(file, ',');

例外:
FileHelpers.FileHelpersException: The string '800NUMBER' not is a valid .NET identifier. at FileHelpers.RunTime.FieldBuilder..ctor(String fieldName, String fieldType) at FileHelpers.RunTime.DelimitedClassBuilder.AddField(String fieldName, String fieldType) at FileHelpers.RunTime.CsvClassBuilder.AddField(String fieldName, String fieldType) at FileHelpers.RunTime.DelimitedClassBuilder.AddField(String fieldName) at FileHelpers.RunTime.CsvClassBuilder..ctor(CsvOptions options) at FileHelpers.CsvEngine.CsvToDataTable(String filename, String classname, Char delimiter, Boolean hasHeader) at FileHelpers.CommonEngine.CsvToDataTable(String filename, Char delimiter)

我不确定是否有办法转义列名,如“[800NUMBER]”。

列名不能更改,因为这是客户提供给我们的方式。


通过与“数据”行分开读取“标题”行解决了这个问题。然后,我更改了“数据”中的列名并使用 SqlBulkCopy 导入数据库。

0 投票
1 回答
2059 浏览

.net - 使用 FileHelpers 输出格式

我正在使用FileHelpers创建固定长度的文件。在我的模型中,我有一个需要以 0000.00 格式输出的双精度。无论如何我可以用 FileHelpers 本身指定这个,还是我需要在创建模型时将我的模型更改为字符串并执行 .ToString(my_format) ?