2016-05-20 7 views
0

私はかなり新しいコーダーです。私が取り組んでいることはすべて自分自身を完全に教えてくれました。私はCSVファイルを読み込み、ついにはSQLサーバに出力しようとしています。 Visual Studio 2015でFileHelpersを使用して実装することに決めました。C#でcsvファイルを読み込むときにコンマ区切りとカラム数に問題があります

私は、データそのものにカンマ(例:9,500)が含まれているという問題があります。私は多くの人々が数の周りに引用符を入れてお勧めします知っている。しかし、私は数字を入力するのではない。そのファイルはちょうど私にそのように送られ、私はSQLサーバーにそれを入力するコードを書くことになっています。 引用符以外の問題を修正する方法はありますか?また、私の行のいくつかは他よりも短いです。

ex: Joe, John, Jim, Ben 
    35, 42, 35, 60 
    A, B,  C, D 
    40, 50 

したがって、例えば、その最後の行は、値の同量を有していません。それらもnullではありません。私はすでにヌル値を扱っています。

それはちょうどそれらを含んでいない、と私は私のコードを実行している行くと、私はエラー -

「ライン取得:29カラム:4.区切り記号 『』が見つかりません

フィールドの 'Hours'(レコードのフィールド数が少ない、区切り文字が間違っている、または次のフィールドをオプションとしてマークする必要があります)。

どうすればこれらの問題を解決できますか? 9,500などのカンマ値を含む行を削除すると、不完全な行も削除すると、コードが完全に機能します。しかし、私はそれがすべてのデータのために働く必要があります。ありがとう

+4

あなたは修正できません!ファイルプロバイダに標準のCSVファイルを提供するよう依頼する必要があります。列は変化しません。値がなければ、 '、'は残っているはずです...カラム値は '、'が含まれていると予想される値の場合は 'quote'で囲まれます。あるいは、 ';'のような別のセパレータに切り替える – techspider

+0

'9,500 'が1つまたは2つの値であるかどうかをどのように知ることができますか? – recursive

+0

"ファイルはちょうど私にそのように送信されます"ここに問題があります。値にエスケープされていない '、'が含まれている場合、 '、'でプロパティを区切ることはできません。 – Xiaoy312

答えて

0

引用符以外の問題を解決する方法はありますか?

はい、アスタリスクなどのコンマスペースの組み合わせで文字列置換を実行できます。アスタリスクまたは特殊文字を分割して項目の配列を取得します。コンマの後にスペースがないので、あなたが値9500を持っていた場合には

string input = "Joe, John, Jim, Ben 35, 42, 35, 60, 9,500"; 
string output = input.Replace(", ", "*"); 
string[] myArray = output.Split('*'); 

は、それは、一つのアイテムではなく2としてその値を解釈します。

しかし、これらの値をCSVで引用符で囲む方がよいです。 Excelがインストールされている場合は、数値の行を追加し、コンマを含む行を追加します。次に、ワークブックをCSVとして保存し、メモ帳でCSVを開きます。カンマ付きの数字は二重引用符で囲まれています。ここでは、私が今行ったテストの例を示します。

Numbers entered in a row: 9,000, 1, 8, 7, 500, 125,050 
CSV text: "9,000",1,8,7,500,"125,050" 

私はあなたを助けてくれることを願っています。がんばろう。

1

あなたは同様に、第3回と第4列の上に

[FieldOptional] 

を使用する必要があります。

"短い行" 問題はかなり簡単にソフトウェアで固定することができ
[DelimitedRecord(",")] 
public class MyRecord 
{ 

    public string Field1; 
    public string Field2; 
    [FieldOptional] 
    public string Field3; 
    [FieldOptional] 
    public string Field4; 

} 
0

  • 各行全体をリスト(文字列)にロードする
  • 各rのセル数を計算するOW
  • 例えば(それは最大

と一致するまで、人々は数字にカンマを入力している場合は空白のセルを追加し、各「短い行」について

  • を使用するセルの最大数を取得します9,500)、あなたは詰まっており、適切にフォーマットされたCSVファイルを要求する必要があります。

    質問のサンプルデータからは、「短行」の問題です。

  • 関連する問題