问题标签 [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 回答
177 浏览

c# - 解析 CSV 数据

我正在尝试解析带有数据的 CSV 文件,但没有成功,我在网上尝试了一堆工具,但没有一个能够正确解析 CSV 文件。我对我在这里寻求帮助这一事实感到困惑,因为有人会认为解析 CSV 数据会非常容易。

CSV 数据的格式如下:

当前代码:

结果变量只有一项及其:

0 投票
1 回答
1314 浏览

c# - C# textFieldParser 错误

我有以下代码段来读取 csv 文件。我在阅读并非真正标准的行时遇到问题。例如像这样的一行

进入捕获字段,因为第二个字段“XXX Bank Azerbaijan”CJSC 的引号不在逗号旁边。但是,当我在 Excel 中打开此文件时,它没有任何问题,并将字段正确分隔为:

我用作|列分隔符的地方。有没有办法使用 具有相同的效果TextFieldParser,否则我将需要使用不同的 csv 阅读器。

0 投票
0 回答
294 浏览

c# - 如何使用 Microsoft.VisualBasic.FileIO.TextFieldParser 订购 CSV 文件 - 升序降序

在我的文件中,我有:

顺序:ID、姓名、薪水。

我正在使用 C# TextFieldParser 开发 CSV 解析器。

我使用逗号分隔符

我如何对里面的数据进行排序?使用 Linq 而不使用 Split 函数

非常感谢

0 投票
2 回答
637 浏览

c# - Stream 在 EndOfData 为真之前进行处理

我正在编写一个连接到 FTP 的方法,将 csv 文件读取到流中,然后使用 TextFieldParser 来处理数据。

一切正常,除了我在读取 CSV 到一半时遇到的一个问题,突然我得到一个 ObjectDisposedException 异常。我尝试将 StreamReader 和 TextReader 都传递给 TextFieldParser 但都导致了同样的问题。

我应该将 CSV 下载到临时本地目录然后读取它还是从 FTP 读取文件没有问题?我想可能有一些服务器设置可能会在读取整个文件之前使流超时。

抛出异常前的最后一行输出

190500,快递,货运,经销商,1,5,15/12/2014 16:44

如果我应该先下载文件,我只使用 WebClient.DownloadFile() 吗?我怎样才能知道文件何时完成下载然后阅读它?

编辑:

系统网络跟踪输出显示如下

System.Net.Sockets 详细:0:[10412] 退出 Socket#24914721::Receive() -> Int32#95 System.Net 信息:0:[10412] FtpControlStream#15315213 - 收到响应 [226-文件成功传输 226 5.748秒(在此处测量),每秒 30.91 KB] System.Net 信息:0:[10412] FtpWebRequest#16868352::(释放 FTP 连接#15315213。)

进一步编辑

System.Net Tracing 的输出显示了正在接收的 CSV 的最后一行,那么为什么解析器在完成之前就被处置了?我对编程还是很陌生,所以我不确定如何进行

0 投票
1 回答
342 浏览

c# - TextFieldParser 和无效行

在我们公司,我们从为我们建议 CSV 文件的供应商那里收到分发信息。但是,他们无法转义文本字段中的引号字符,这会导致多行被忽略;使用文本字段解析器。

坏线的一个例子:

"CABLES TO GO","87029","5.0200","47","757120870296","87029", "WP SGL ALUM 1 1/2" GROMMET"

对应的代码片段是:

此外,该供应商无法更改源文件以转义这些引号。像这样的这些行的最佳解决方法是什么?

0 投票
1 回答
1576 浏览

arrays - 使用 textfieldparser ReadFields() 并将多行存储在一个数组中

我想知道是否有一种方法可以从多个文本文件中读取多行以逗号分隔的文本并将它们全部存储在同一个数组中而不会覆盖已经存在的数据?我尝试了多种方法,似乎没有任何效果。因此,例如:

当我尝试将数组的一个值分配给另一个数组时,我不断抛出 System.NullReferenceException ......

我知道 ReadFields() 返回一个数组,所以我也尝试将每一行存储在一个锯齿状数组中,这会引发相同的错误。

作为对此的补充,我是否有更好的方法来做到这一点?我读了很多关于将整个文件读入一个数组然后解析它,但我似乎仍然无法将一个数组的值存储在另一个数组中......

提前感谢大家的帮助!

0 投票
0 回答
802 浏览

c# - 在可变长度字符串中使用 TextFieldParser.FixedWidth

我正在开发一个旨在以固定宽度格式(8 char x 10 col)读取数据的解析器。但是,有时情况并非如此,有时在不符合此条件的区域中存在有效数据。假设存在转义字符(例如下图中的 +)是不安全的,因为它是几种格式之一。

我曾尝试使用 TextFieldParser.FixedWidth,并给它一个 8x10 的输入,但是任何不符合这个数量的东西都会被发送到 ErrorLine。

  1. 从我的异常捕获块中解析似乎不是一个好习惯,是吗?

  2. 由于只有不一致的行需要额外的工作,所以强力子方法是最好的方法吗?我所有的数据总是以 8 个字符块的形式出现。一行中的最后一个块可能很棘手,因为如果手动输入它可能会更短。(前提是#1可以做)

  3. 有没有更好的工具可以使用?我觉得我正试图用一个固定宽度的 textfieldparser 在一个圆孔中安装一个方形钉。

注意:分隔解析不是一个选项,请参见第二张图。

编辑澄清:下面的文字是 NASTRAN 的输入卡组的一对摘录,有限元代码。我的目标是有一个通用的解析方法,它将读取文本文件,然后将拆分的字符串 [] 传递给其他方法,以将每张卡片实际处理为特定的映射对象。(例如在下图中,两种对象类型是 RBE3 和 SET1)

提取方法:

示例数据,(打开显示所有字符以获得更好的可见性)

更多示例数据

0 投票
3 回答
2632 浏览

c# - 忽略没有数据的 CSV 行

我很惊讶我在这里没有看到任何关于这个的东西(或者我可能错过了)。解析 CSV 文件时,如果存在没有数据的行,如何/应该如何处理?我不是在谈论空行,而是空行,例如:

我正在使用 TextFieldParser 来处理数据中的逗号、多个分隔符等。我想到的两个解决方案是使用 ReadLine 而不是 ReadFields,但这会消除使用 TextFieldParser 的好处,我假设,因为那时我必须以不同的方式处理逗号。另一种选择是遍历字段并在所有字段为空时删除该行。这是我所拥有的:

0 投票
1 回答
466 浏览

c# - TextFieldParser 未设置 EndOfData 字段

我有一个Validate(Stream inputStream)方法。此方法通过将inputStream传递给每个验证方法来调用其他几种验证方法。这些中的每一个都会创建一个新TextFieldParser文件并读取/验证文件。

当第一个ValidateA(inputStream)被调用时,它会起作用。但是,当ValidateB(inputStream)调用2nd 时,它parser.EndOfData真的,所以它不会读取字段。

我试图将代码清理为最简单的形式。

这是问题发生的地方。ValidateB 方法无法处理该文件,因为该EndOfData字段未重置。

0 投票
1 回答
997 浏览

c# - 将CSV逐行读取到C#中的多个文本框中

我希望将 CSV 读入表单中的多个文本框中。CSV 文件的每一行都有不同的列数,我需要它分别读取 CSV 的每一行 - 我不希望将行末尾的空白值写入文本框。CSV 如下所示:

它所要做的就是单击按钮,读取逗号分隔值的每一行并将每个值按顺序放入文本框中。即 textbox1 = CSV 值 1,textbox2 = CSV 值 2,依此类推。

表单如下所示,每一行对应 CSV 中的一行。

这就是我目前拥有的,我从未使用过文本字段解析器,所以它只是一个测试,看看我是否真的可以让它写一个文本框。

谢谢!