0

CSVHelper を使用して DataReader の結果を csv ファイルに書き込みますが、データリーダーから列名を取得するだけでなく、ヘッダー名を手動で入力する必要があることを除いて、すべてがうまく機能します。

したがって、現在、次を使用してデータを取得し、ヘッダーを配置しています。これは、CSVHelper のドキュメントから直接取得されます: http://joshclose.github.io/CsvHelper/#misc-faq

            while (rdr.Read())
            {
                if (!hasHeaderBeenWritten)
                {
                    for (var i = 0; i < rdr.FieldCount; i++)
                    {
                        csv.WriteField(rdr.GetName(i));
                    }
                    csv.NextRecord();
                    hasHeaderBeenWritten = true;

                    foreach (var item in dataList)
                    {
                        csv.WriteRecord(item);
                    }
                }
                for (var i = 0; i < rdr.FieldCount; i++)
                {
                    csv.WriteField(rdr[i]);
                }
                csv.NextRecord();
            }

基本的に、上記で使用されている rdr.GetName(i) メソッドに対して、クラスが返すことができる 3 つの列に手動の名前を追加することを検討しています。

誰にも解決策はありますか?私は csv.WriteField("namehere"[i]); をやってみました。これは明らかに機能せず、代わりに各文字を 3 つの列にまたがって停止しました。

4

1 に答える 1

1

Question: "HOW DO I PROPERLY ADD A CUSTOM HEADER IN CSVHELPER?"

Simply create an string array with the column names you wish and pass them in using csv.WriteField(*ARRAYHERE*)[i]; and for each column a they will be added in order they appear in the array.

Create they array:

string[] arrayHeader = new string[] { "Header1", "Header2", "Header3" };

Pass each column name in:

                    for (var i = 0; i < rdr.FieldCount; i++)
                    {
                        //csv.WriteField(rdr.GetName(i));
                        csv.WriteField(arrayHeader[i]);
                    }
于 2016-02-17T13:08:26.163 に答える