问题标签 [textfieldparser]

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 投票
2 回答
2353 浏览

c# - C# 中的 TextFieldParser 问题

错误放置的屏幕截图我在 Windows 7 Enterprise 上使用 Visual Studio 2013、.NET 4.5.2、OpenXml 2.5。我创建了一段代码,将两个 .csv 文件导入到一对通用列表中,并比较它们是否存在异常。当我去构建一个通用类来加载 .csv 文件时,TextFieldParser 不起作用。它在 Main() 中工作,但不在一个类中。

尽管我怀疑答案与“在命名空间中使用别名”有关,但它在 Main() 中完美运行。Microsoft 有一个免责声明,即 rhs 不能是泛型类型,但如果它在一个地方工作,为什么不能在另一个地方工作?

这是预期的行为还是有已知的解决方法?

背景:TextFieldParser 是一个 VB.NET 类,可以巧妙地处理 .csv 或固定字段文件的解析。通用列表或列表是可以处理放置在其中的任何内容的列表类。就我而言,我使用记录类作为包含的对象。OpenXml 是一种 Microsoft 技术,用于与 Office 产品一起处理 XML 配置文件或连接字符串。我将导入配置设置以使使用的类通用。它是在尝试为我遇到问题的 TextFieldParser 构建一个通用类。谷歌已经让我走到了这一步,但没有更进一步。

Main() 中的工作代码:

类中的非工作代码本身:

编辑:

添加错误列表:

错误 1 ​​} 预期 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 43 10 InputSide
错误 2 在类、结构或接口成员声明 c:\users\ jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 46 13 InputSide
错误 3 ;预期 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 46 77 InputSide
Error 4 Invalid token '=' in class, struct, or interface member declaration c:\users\jas189\documents \visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 48 41 InputSide
错误 5 无效的令牌 ';' 在类、结构或接口成员声明中 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 48 62 InputSide
Error 6 Invalid token '(' in class, struct, or interface member declaration c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 49 40 InputSide
错误 7 类、结构或接口成员声明中的无效标记 '=' c:\users\jas189\documents\ visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 50 53 InputSide
错误 8 类、结构或接口成员声明 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide 中的标记“=”无效\CsvLoader.cs 51 42 输入端
错误 9 类、结构或接口成员声明中的无效标记 ')' c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 53 44 InputSide
错误 10 类中的无效标记 'if' 、结构或接口成员声明 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 59 25 InputSide
错误 11 类、结构或接口成员声明 c 中的标记“<=”无效:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 59 40 InputSide
Error 12 Invalid token '(' in class, struct, or interface member declaration c:\users\jas189\documents\visual工作室 2013\Projects\InputSide\InputSide\CsvLoader.cs 62 42 InputSide
错误 13 类、结构或接口成员声明 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 62 45 InputSide
错误 14 命名空间不能直接包含成员,例如作为字段或方法 c:\users\jas189\documents\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 65 21 InputSide
Error 15 类型或命名空间定义,或预期文件结尾 c:\users\jas189\文档\visual studio 2013\Projects\InputSide\InputSide\CsvLoader.cs 70 17 InputSide
错误 16 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.filePath' c:\users\jas189\documents \visual studio 2013\projects\inputside\inputside\csvloader。cs 46 68 输入端
错误 17 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.csvParser' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 58 40 InputSide 错误18 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.row' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 64 InputSide
错误 19字段初始化程序无法引用非静态字段、方法或属性“InputSide.CsvLoader.row”c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 72 InputSide
错误 20 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.row' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 80 InputSide
错误21 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.row' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 88 InputSide
错误 22字段初始化程序无法引用非静态字段、方法或属性“InputSide.CsvLoader.row”c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 96 InputSide
错误 23 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.row' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 104 InputSide
错误24 字段初始化程序无法引用非静态字段、方法或属性 'InputSide.CsvLoader.row' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 61 112 InputSide
错误 25 'InputSide.CsvLoader.CsvList(int)':并非所有代码路径都返回值 c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 42 35 InputSide
错误 26 'InputSide.CsvLoader.csvParser' 是一个'字段',但用作'类型' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 48 17 InputSide
Error 27 ' Microsoft.VisualBasic.FileIO.FieldType.Delimited' 是一个“字段”,但用作“类型” c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 48 53 InputSide 错误 28 'InputSide.CsvLoader.csvParser' 是一个'字段',但用作'类型' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 49 17 InputSide
Error 29 'InputSide. CsvLoader.csvParser' 是一个“字段”,但用作“类型” c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 50 17 InputSide
错误 30 'InputSide.CsvLoader.csvParser' 是一个'字段',但用作'类型' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 51 17 InputSide
Error 31 ' InputSide.CsvLoader.csvParser' 是一个“字段”,但用作“类型” c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 53 25 InputSide
Error 32 'InputSide.CsvLoader .row' 是一个“字段”,但用作“类型” c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 59 29 InputSide
Error 33 'InputSide.CsvLoader.inputList'是一个“字段”,但用作“类型”c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 62 29 InputSide
错误 34 'InputSide.CsvLoader.dr' 是一个'字段',但用作'类型' c:\users\jas189\documents\visual studio 2013\projects\inputside\inputside\csvloader.cs 62 43 InputSide

0 投票
6 回答
3055 浏览

c# - 如何处理解析错误的 csv 数据?

我知道数据应该是正确的。我无法控制数据,而我的老板只会告诉我,我需要想办法处理别人的错误。所以请不要告诉我数据不好不是我的问题,因为它是。

任何人,这就是我正在看的:

出于保密原因,数据已被清除。

如您所见,数据包含引号,并且其中一些引用字段中有逗号。所以我不能删除它们。但是“Suite A”“”正在抛弃解析器。引号太多了。>.<

我在 Microsoft.VisualBasic.FileIO 命名空间中使用 TextFieldParser 和这些设置:

错误是

MalformedLineException:无法使用当前分隔符解析第 9871 行。

我想以某种方式清理数据以解决此问题,但我不知道该怎么做。或者也许有办法跳过这条线?尽管我怀疑我的上级不会批准我跳过我们可能需要的数据。

0 投票
0 回答
730 浏览

vb.net - VB.NET Textfieldparser 从第二行开始

我有一个文本文件,例如:

通过使用textfieldparser方法,我如何从第二行开始并在第四行停止?并尝试使用字段宽度 {2,4,3,1} 解析每一行。

这是我期望的结果输出:

0 投票
3 回答
5770 浏览

c# - 如何使用 C# 解析 CSV 中的数据,并在数据中使用逗号?

我正在尝试解析数据中带有逗号的 CSV 文件。所有字段都没有引号,但是当它们中有逗号时,一些美元金额会出现。例如,文件看起来像这样:

因此,您可以看到 1,420.97 中有一个逗号,但它确实有引号。有没有办法可靠地读取这个文件?

这是我的代码:

0 投票
1 回答
232 浏览

vb.net - 使用 textfieldparser vb.net 遍历文本文件“固定长度”

每行引用 sql 中的一个单独的表。我需要将每一行导入表格。我在将“1502”行导入到一张表时遇到了麻烦。下面是我的代码。我需要循环语句中的帮助。

0 投票
1 回答
57 浏览

vb.net - 指定水平和垂直移动

我希望能够通过管道(“|”)分隔的文本文件移动,控制我读取的行和列。

我以前在 MS Access VBA 中实现了这一点,目前正在 VB.NET 中开始,但正在努力完成这一点。

在 Access 中,VBA 允许我以记录集 ( Dim rs As DAO.Recordset) 的形式链接到文本文件,预定义为分隔并在行中移动 (rs.MoveNextrs.MovePrevious),同时选择我需要的字段/列 ( rs!Field1)。

VB.NET 中是否有任何等价物?到目前为止,我只能从 MSDN 中找到以下内容,但不知道如何操作它:

我希望能够将某些字段存储到稍后写入 .CSV 文件的变量中。

0 投票
0 回答
36 浏览

vb.net - vb.net:比较两个 TextFieldParsers

在我的 vb.net 项目中,我在计时器内使用 TextFieldParser,每 100 毫秒读取一个 csv 文件。我一个接一个地循环读取记录并将它们填充到数据表中。

就性能而言,每 100 毫秒一个一个地循环遍历所有记录将非常昂贵。

所以我定义了临时 TextFieldParser,让我们将其命名为 TextFieldParser2 并将其设置为等于主 TextFieldParser,让我们在计时器结束时将其命名为 TextFieldParser1:

TextFieldParser2=TextFieldParser1

然后每次触发计时器事件时,我都想检查 TextFieldParser2 <> TextFieldParser1 是否继续(因为这意味着 csv 文件已更改),否则退出子。

我试过了:

和:

但没有任何工作。

0 投票
0 回答
348 浏览

vb.net - 处理 TextFieldParser 中的错误

我有一个 VB .Net winforms 应用程序,它解析 CSV 文件并将解析的行添加到表结构中。

问题是有时 CSV 格式错误,并且在字符串中间包含双引号。所以像:

这就是为什么我有一个错误处理程序,它可以捕获错误并通过将有问题的双引号转换为单引号来修复它。问题是当我解决问题时,我不知道该行的其余部分是什么。因为线路有问题,所以根本没有读入任何内容。我确实可以通过 Error 对象访问有问题的字段,但仅此而已。不幸的是,即使出现错误,TextFieldParser 还是移到了下一行。有没有办法回到一行?

0 投票
2 回答
213 浏览

c# - 如何告诉 TextFieldParser 从提供的文件系统进行解析?

我正在编写一种验证 csv 文件的方法。我也在进行单元测试,所以我正在使用System.IO.Abstractions我想用来TextFieldParser读取 csv 文件的模拟 csv 文件设置一个模拟文件系统,但我不确定如何告诉它从路径中读取在IFileSystem(从System.IO.Abstractions)提供。

基本上,代码看起来像这样:

而且我想知道我本质上是如何告诉TextFieldParser使用提供的文件系统而不是使用本地计算机从路径解析的。

0 投票
1 回答
1109 浏览

vb.net - 使用 TextFieldParser 从流中解析 CSV 总是到达 EndOfData

在将 CSV 文件解析为来自 Azure Blob 的流期间,TextFieldParser 始终会立即到达 EndOfData,而无需读取任何数据。相同的代码,但具有相同物理文件的路径而不是流工作。

我也尝试过转换MemoryStreamTextReader

然后传入myTextReaderTextFieldParser但这也不起作用。

Using Reader As New FileIO.TextFieldParser(myTextReader)