2016-07-11 12 views
-5

こんにちは、以下のコードは、CSVファイルを作成する際の私のコードです。 csvの作成は問題ありませんが、csvがテキストファイルに変換するときには、値の先頭と最後の間に引用符を入れてください。 EX:CSVファイルでは、値は:Jhamで、テキストファイルでは「Jham」でなければなりません。どうすればそれを管理できますか?誰かを助けることができる?CSVファイルの引用符ではないが、TXTファイルには引用符はありません

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() 

答えて

0

第1に、コードスニペットを投稿するときは、わかりやすいようにフォーマットしてください。私はあなたのためにそれを修正しました。

第2に、CSVファイルとテキストファイルの間に「変換」するものはありません。 CSVは単なるテキストです。テキストにレコード区切り文字とフィールド区切り文字が含まれている場合はCSVファイル、そうでない場合はCSVファイルです。いずれにしてもプレーンテキストです。質問については

、私は、引用符で囲まれた値を使用して、このような何かCSVを書くことをお勧め:VB 2015年には、文字列の補間は、コードがはるかに読みやすくなり、

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

String.Formatのを使用することか。リテラル文字列に二重引用符を入れる場合は、別の二重引用符で簡単にエスケープします。それは一般的にテキストのみ引用され得る値ではなく、数値や日付などであること

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

注:あなたはまた、ControlChars.Quoteフィールドを使用する場合があります。これは、引用の主な理由は、値に区切り文字(コンマまたは改行)を含めることができるためです。区切り文字を含む値がない場合は、引用符を完全に省略することができます。

編集:ここでは例として、私は第一及び第四列はString値が含まれているCSVファイルにDataTableを書くかもしれない方法ですが、2列目には数字が含まれており、3列目は、Date値が含まれています。

Private Sub WriteToCsv(table As DataTable, path As String) 
    Dim lines As New List(Of String) 

    For Each row As DataRow In table.Rows 
     lines.Add(String.Format("""{0}"",{1},{2:yyyy-MM-dd},""{3}""", 
           row(0), 
           row(1), 
           row(2), 
           row(3))) 
    Next 

    IO.File.WriteAllLines(path, lines) 
End Sub 
+0

私はそれについて研究しましたが、私は試みたことはありません。あなたの提案と同じように見えます。私は後でそれをやります。ありがとう。私はあなたに一度それを知らせます。ありがとう男 – Jham

+0

こんにちは!それは実際には動作しませんでした – Jham

+0

私が掲示したコードは、二重引用符で囲まれた各値をカンマ区切りの文字列を与えるでしょう。それがあなたが望むなら、私のコードを正しく使うことができます。それがあなたの望むものなら、それはあなたのためにはうまくいかず、あなたは間違ってしまったのです。あなたがしたことを知らずに、何が間違っているかを知る方法はありません。 – jmcilhinney

関連する問題