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 回答