标签: textfieldparser

TextFieldParser类

我正在使用TextFieldParserClass来读取逗号分隔值(.csv)文件.此文件中的字段用双引号括起来"Field1","Field2".

因此,要读取文件,我将object 的HasFieldsEnclosedInQuotes属性设置TextFieldParser为true.但是我得到一个错误,MalformedLineException当任何字段在开头包含双引号("+")时.

示例:""Field2"with additional"这里我应该"Field2" with additional看作输出.

但是,如果"除了第一个位置以外的任何地方那么它工作正常 像线条一样"Field2 "with" additional"完美地工作,并给我Field2 "with" additional 输出.

有没有人有同样的问题?有什么办法可以解决这个问题吗?

这是我的代码:

Private Sub ReadTextFile(ByVal txtFilePath As String)
    Dim myReader As tfp = New Microsoft.VisualBasic.FileIO.TextFieldParser(txtFilePath)
    myReader.Delimiters = New String() {","}
    myReader.TextFieldType = FileIO.FieldType.Delimited
    myReader.HasFieldsEnclosedInQuotes = True
    myReader.TrimWhiteSpace = True
    Dim currentRow As String()
    Dim headerRow As Integer = 0

    While Not myReader.EndOfData
        Try
            currentRow = myReader.ReadFields()

            'Read …
Run Code Online (Sandbox Code Playgroud)

vb.net file-io textfieldparser

5
推荐指数
2
解决办法
7763
查看次数

使用AutoMapper将字符串数组映射到对象

我正在使用TextFieldParser解析CSV文件导入数据库EntityFramework.

TextFieldParser将CSV文件的每一行作为a返回string[].为了保存对象,我需要从每一行构建一个对象.有什么方法可以使用AutoMapper吗?

我的对象结构是这样的:

public class Person
{
    public string FirstName { get; set; }
    public string MiddleName { get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的CSV行格式如下:

名字,中间名,姓氏,地址,******中国

c# csv automapper textfieldparser

5
推荐指数
1
解决办法
4053
查看次数

TextFieldParser从字符串而不是文件解析CSV

使用Microsoft.VisualBasic.FileIO中的TextFieldParser,可以解析CSV文件,如下所示:

using (TextFieldParser parser = new TextFieldParser(CSVPath))
{
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters(",");
    parser.HasFieldsEnclosedInQuotes = true;
    while (!parser.EndOfData) { string[] fields = parser.ReadFields(); }
}
Run Code Online (Sandbox Code Playgroud)

但是,这依赖于使用CSV文件路径初始化TextFieldParser.是否可以产生相同的效果,但在传递包含数据记录本身的字符串时?

例如,对于Data1,6.5,"Data3 ""MoreData"""保存在字符串变量中的值为(注意由于转义的引号引用的引号括起来的最后数据)的CSV数据记录,我可以将数据转换为字符串数组,如下所示:

[0] = "Data1"
[1] = "6.5"
[2] = "Data3 \"MoreData\""
Run Code Online (Sandbox Code Playgroud)

c# csv textfieldparser

5
推荐指数
2
解决办法
5959
查看次数

标签 统计

textfieldparser ×3

c# ×2

csv ×2

automapper ×1

file-io ×1

vb.net ×1