0

FileHelpers を使用して、アプリケーションから動的に作成されたデータをエクスポートしています。ユーザーが列と行を編集 (追加、削除、操作) できる DataGridView があるため、最終的にどのデータが FileHelpers に渡されるのかわかりません。

FileHelpersを使用して CSV ファイルを動的に作成すると、CsvEngine.DataTableToCsvメソッドが示されました。残念ながら、このメソッドは区切り文字、二重引用符、改行を含むフィールドをエスケープしません。

定義済みのクラスがあれば、FieldQuoted-Annotation を使用して FileHelper に適切な形式を使用させることができますが、そうではないため、動的に作成されたデータでこれをアーカイブする方法がわかりません。

//編集: いくつかのコード / 現在のアプローチ:

    /// <summary>
    /// Converts the Data in a DGV into a DataTable.
    /// </summary>
    /// <param name="dataGridView"></param>
    /// <returns></returns>
    public static DataTable GetDataTableFromDGV(DataGridView dgv)
    {
        DataTable myDT = new DataTable();
        // add Columns
        foreach (DataGridViewColumn col in dgv.Columns)
        {
            myDT.Columns.Add(col.Name);
        };

        // add Rows
        foreach (DataGridViewRow row in dgv.Rows)
        {
            List<Object> line = new List<object>();
            foreach (DataGridViewCell cell in row.Cells)
            {
                line.Add(cell.Value);
            }
            myDT.Rows.Add(line.ToArray<Object>());
        }
        return myDT;
    }

    public void main(){

        String filename = "test.csv"
        DataTable dt = GetDataTableFromDGV(this.dgv);
        CsvEngine.DataTableToCsv(dt, filename, ',');

    }

何か案は?

4

1 に答える 1

0

事前定義されたクラスを使用できない場合、FileHelpers はそれほど強力ではありません。

ただし、から変換するときにすべての値にアクセスしているのでDataGridView、そこでエスケープを処理しないのはなぜですか?

foreach (DataGridViewCell cell in row.Cells)
{
    line.Add(AddDoubleQuotesAndEscapeIfNecessary(cell.Value));
}
于 2011-12-23T17:02:55.600 に答える