1

Excelで使用するために既存のCSVファイルにデータを追加しようとしています。

取得するデータの量が非常に多いため、データテーブルに入力してCSVに書き込むことはできません。現在、テーブルの各列にデータを入力し、それをファイルに書き込んでから、テーブルをクリアして再起動しています。

これは、別の列のCSVにデータを追加する限り機能しますが、次の列の既存のデータの下に新しいデータを追加します。

プログラムがCSVに書き込む方法は次のとおりです。

  public void Output_CSV()
    {
        StringBuilder sb = new StringBuilder();

        foreach (DataRow row in DataTable.Rows)
        {
            IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
            sb.AppendLine(string.Join(",", fields));
        }

        File.AppendAllText(outPut, sb.ToString());

        sb.Clear();
    }

このコードは、前の列の空白セルを含むテーブル内のすべてのデータを追加し、その下に現在のデータを追加します。テーブル内の列を選択し、その列の行をCSVに追加する方法はありますか。

4

1 に答える 1

0

私が正しく理解していれば、あなたは次のことをしています。

A、B、C

CSVファイルで。各行にデータを追加したい:

A、B、C、D、E、F

あなたが見ているのは

A、B、C

そして次の行で:

D、E、F

これは、AppendAllTextメソッドがファイルの最後に書き込むだけだからです。

やりたいことを行うには、出力ファイルを読み取り、コンテンツを解析し、正しいポイントに追加のデータを挿入してから、ファイルを再保存する必要があります。

ファイルをストリームにロードし、行を読み取り、新しいデータを行の最後に追加してから、その行を新しいストリームに書き込み(この最終出力と呼びます)、すべてを解析するまで繰り返します。データを保存してから、最終的な出力ストリームを保存します。

これは、CSVデータの各行の終わりに改行、キャリッジリターン、またはその両方があることを前提としています。

于 2012-09-21T09:45:31.087 に答える