2016-11-30 5 views
0

私はvb.netアプリケーションでCSVファイルへの書き出しを行い、それをOutlookにエクスポートしました。Excelでダブルスペースをコンマで処理するのはなぜですか?

問題は、CSVファイルが書き込まれているときに、自分のコードが現在のフィールドのカンマをチェックしていますが、これを実行しているときにカンマまたはスペース(複数行テキストボックスの場合)

たとえば、顧客のメモセクションに4行のテキストがあり、1行がスペースで終わっている場合 - ユーザーがEnterキーを押した場合次の行に移動しますが、プログラムは次の行に移動し、その行をカンマであると考えて、新しい行を作成します。

この理由は何ですか?つまり、データをエクスポートする前に、データのスーパーバリデーションを行う必要があります(つまり、二重スペースなどがないかどうかを確認する必要があります)。これは時間がかかりすぎます。

これはうまくいけばうまくいきます。

これはコードです:

Dim result As Boolean = True 

Try 
    Dim sb As New StringBuilder() 
    Dim separator As String = "," 
    Dim group As String = """" 
    Dim newLine As String = Environment.NewLine 

    For Each column As DataColumn In dtable.Columns 
     sb.Append(wrapValue(column.ColumnName, group, separator) & separator) 
    Next 

    sb.Append(newLine) 

For Each row As DataRow In dtable.Rows 
    For Each col As DataColumn In dtable.Columns 
     sb.Append(wrapValue(row(col).ToString(), group, separator) & separator) 
    Next 

    sb.Append(newLine) 
Next 

それは430線でそれを短縮するという事実に基づいてwrapValue

Function wrapValue(value As String, group As String, separator As String) As String 

    If value.Contains(separator) Then 

     If value.Contains(group) Then 
      value = value.Replace(group, group + group) 
     End If 

     value = group & value & group 

    End If 

    Return value 

End Function 
+0

'wrapValue'で' If value.Contains(separator)Then then'をチェックしないと(つまり二重引用符で*すべての*フィールドを囲みます)は動作しますか?そのままでは、カンマ付きのフィールドだけが囲まれます。つまり、改行は裸であり、新しいCSVラインのように見えます。 –

+0

@AndrewMortonこんにちは、ありがとう、ありがとう。問題は、Outlookの連絡先にインポートしようとしたときにインポートされた後にエラーが発生したということです。Excelでファイルを開き、CSVとして保存し直して、古いファイルを置き換えました。それがなぜ初めて動作しなかったのか? – Harambe

+0

最も簡単な方法は、異なるファイル名でExcelからファイルを保存し、16進エディタを使用してファイルの内容を調べることです。重要な相違点を指すポインタとして、その1つの先頭に[バイトオーダーマーカー](https://en.wikipedia.org/wiki/Byte_order_mark)があるか、または改行が必要である可能性があります0x0D 0x0Aではなく、エントリ内の0x0D *または* 0x0Aとなります。 –

答えて

0

ためのコード、私はそれが事実とは何かだことをお勧めしたいですvalue変数の前後に ""のロードを追加しています。

最初の値を削除している場合は、最初の列ヘッダーの前に「削除」されます。コメントで述べたように1つのレコードをインポートする理由については、私は完全にはわかりません問題は、あなたのwrapValueコードであることをお勧め。

をあなたは

value = value 

とその変化かどうかを確認するために

value = group & value & group 

を変更してみてください何か?

関連する問題