CSV文件中的非报价标记但是TXT文件中有

时间:2016-07-11 10:12:44

标签: vb.net

以下代码是我创建csv文件的代码。 csv的创建没有问题,但是当csv转换为文本文件时,它们会在值的开头和结尾之间加上引号。 EX:在CSV文件中,值为:Jham,在文本文件中应该是:“Jham” - 我该如何管理它?有人可以帮忙吗?

listofValue = ZipFileStr & "," & Img1Val & "," & Img2Val & "," & RExVal & "," & BundleNo & "," & BundleNo & "," & URNVal & "," & PromocodeVal & "," & ZipFileStore & "," & SNumVal & "," & DpackVal & "," & ArrivalDate & "," & CompleteDateTwo & "," & KidPCVal & "," & MDBName

Dim PathX As String = TempPath & "\"

If Not IO.Directory.Exists(PathX) Then
    MkDir(PathX)
End If

Dim sampleX As String = PathX & ZipFileStr & "P.csv"
Dim outFile As IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(sampleX, True)

outFile.WriteLine(listofValue)
outFile.Close()

1 个答案:

答案 0 :(得分:0)

首先,在发布代码段时,请将其格式化以便于阅读。我已经为你修好了。

其次,在CSV文件和文本文件之间没有“转换”之类的东西。 CSV只是纯文本。如果文本包含记录和字段分隔符,则它是CSV文件,否则不是。无论如何都是纯文本。

关于这个问题,我建议写一个带引号值的CSV:

Dim line = String.Format("""{0}"",""{1}"",""{2}""",
                         firstValue,
                         secondValue,
                         thirdValue)

String.Format的使用,或者在VB 2015中,字符串插值使代码更具可读性。至于在文字字符串中放置双引号,您只需使用另一个双引号将其转义。您也可以使用ControlChars.Quote字段:

Dim line = String.Format("{0}{1}{0},{0}{2}{0},{0}{3}{0}",
                         ControlChars.Quote,
                         firstValue,
                         secondValue,
                         thirdValue)

请注意,通常只有引用的文本值,而不是数字和日期等。这是因为引用的主要原因是允许值包含分隔符,即逗号或换行符。如果您的值都没有包含分隔符,那么您可以安全地省略引号。

编辑:作为一个例子,我可以将DataTable写入CSV文件,其中第一列和第四列包含String值,第二列包含数字,第三列包含{{ 1}}值。

Date