6

FileHelpersは、実行時までレイアウトがわからない場合にCSVファイルをDataTableに読み込むことができる「RunTimeRecords」と呼ばれる機能をサポートしています。

FileHelpersを使用して、実行時に同じ方法でCSVファイルを作成することは可能ですか?

一部のユーザー入力に基づいて、作成する必要のあるCSVファイルには、実行時にのみ認識できるさまざまなフィールドがあります。読み取りセクションで説明されているように、FileHelperエンジンに必要なタイプを作成できますが、データを書き込むために必要な形式がわかりません。

var engine = new FileHelpers.FileHelperEngine(GenerateCsvType());

engine.WriteStream(context.Response.Output, dontKnow);

編集

あるいは、実行時までフィールドを知らなくてもCSVファイルを作成できる優れたCSVライブラリを誰かが提案できますか?たとえば、DataTableからCSVファイルを作成します。

4

2 に答える 2

8

実際、ライブラリは実行時レコードの読み取りのみを許可しますが、目的を書き込むために、次のようにDataTableToCsvメソッドを使用できます。

CsvEngine.DataTableToCsv(dt, filename);

それが役に立ったら教えてください。

于 2010-01-21T21:18:57.027 に答える
1

これは古い質問だと思いますが、私自身も同じ問題に遭遇し、解決策を探すのに時間を費やしたので、調査結果を共有することにしました。

FileHelpers RunTime Recordsを使用して定義を作成している場合は、リフレクションを使用して同じ定義を設定できます。

たとえば、定義を作成する場合

        DelimitedClassBuilder cb = new DelimitedClassBuilder("Customers", ",");
        cb.AddField("StringField", "string");

        Type t = cb.CreateRecordClass();
        FileHelperEngine engine = new FileHelperEngine(t); 

これで、FileHelpersによって作成された同じタイプを使用して、次のように値を入力できます。

        object customClass = Activator.CreateInstance(t);
        System.Reflection.FieldInfo field = customClass.GetType().GetField("StringField", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
        if (field != null)
        {
            field.SetValue(customClass, "StringValue");
        }

そして、それをファイルまたは文字列に書き込みます。

        string line = engine.WriteString(new object[] { customClass });
于 2015-04-23T13:40:42.420 に答える