1

バックグラウンド:

Asp.Net (C#) Web アプリケーションのデータ交換形式に CSV を使用しました。通常、リクエストの一括アップロードを行うために使用されるファイル。それは今までうまく機能し、まだ機能しています。

ただし、文化を調査しているときに、csv ファイルに多くの問題があることがわかりました。最大の問題の 1 つは、セパレーターが地域設定によって決定されていることです。ユーザーが Ms Excel でファイルを編集しているときに発生します。たとえば、デリミタは米国ではコンマで、ヨーロッパの一部の地域ではセミコロンです。

しばらく検索しましたが、そのようなケースを処理する特効薬は見つかりませんでした。今、私は疑問に思っています:

  1. CSV ファイルで区切り記号の定義を処理する良い方法はありますか?

  2. 仕様を備えた不変の文化であるより良いデータ交換形式はありますか:

    • ファイルはプレーンテキストです (ms Excel xlsx のようなエンコードされたファイルではありません)。
    • 不変の文化です。小数点記号を処理するつもりはありませんが、少なくとも区切り記号で不変です
    • Ms Excel などのスプレッドシート アプリケーションでサポートされています。
    • (オプション) OleDb エンジンで読み取ることができます

または、フラット ファイルを使用して表形式のデータ交換を行う良い方法はありますか?

アップデート:

これまでのところ、与えられたソリューションの長所と短所の要約を次に示します。

  1. CSV (一般に、区切られたフラット ファイルを表すためにも使用されます):

    長所:

    • ExcelやOleDbなど多くのプロセッサに対応
    • 読みやすい
    • メモ帳で簡単操作

    短所:

    • ms Excel で編集するときに区切り記号の問題がある
    • 区切り文字をエスケープまたは処理する必要がある
  2. XML:

    長所:

    • Excel や xml シリアライザなど、多くのプロセッサでサポートされています
    • メモ帳で簡単操作
    • 構造形式を表す

    短所:

    • Excelで処理する場合は追加の処理が必要
    • タグを使用すると、xml 内のコンテンツが増えます
  3. ジョンソン:

    長所:

    • 構造形式を表す
    • メモ帳で簡単操作

    短所:

    • Excel などのスプレッドシート プロセッサではネイティブにサポートされていません (確認する必要があります)。
4

4 に答える 4

2

CSV の単純な代替は JSON にすることができます。JSONは、さまざまなプラットフォームで多くのサポートを備えた非常に単純な形式です。

CSV で発生する問題に対する主な利点は、問題がないことです。文化に依存しません。

欠点もありますが、それらは CSV と共有されます (たとえば、話すデータ型がありません)。

于 2013-05-10T17:06:54.257 に答える
2

区切り文字としてタブを使用するのは簡単な切り替えであり、ほとんどのライブラリで読み取りまたは書き込みがサポートされているようで、Excel で動作します。

于 2013-05-10T19:06:33.893 に答える
2

XML は、CSV よりも優れたデータ交換方法です。

  1. 構文規則は明確です。XML 標準は、データ交換に深い経験を持つ国際委員会によって策定され、合意されています。CSV は、合意よりも実践によって定義されるアドホックな交換フォーマットです。
  2. 文字セットのルールは明確です。Unicode とそのさまざまなエンコーディングも、国際委員会によって標準化されています。
  3. プログラムから XML を発行するのは非常に簡単で、文字セットなどの困難な作業を支援するライブラリが多数あります。
  4. XML の読み取りも非常に簡単です。困難な作業に役立つライブラリが多数あります。Microsoft Excel およびほとんどの商用データベースは、XML ファイルの読み取りと書き込みを行います。
于 2013-05-10T17:10:50.207 に答える
1

ファイル全体を に読み込み、関数をstring _var適用して、必要なString.Split()セパレーターのセットを指定する配列を取得charできます。DataTable / DataViewその後、配列を DB に挿入したり、Excel Lib に対応する、またはオブジェクトに変換したりRangeできます (注: このソリューションは C# の実装に関連しています)。

于 2013-05-10T17:09:49.493 に答える