FileHelpers: CsvEngine.DataTableToCsv创建无效的CSV
本文关键字:无效 CSV 创建 DataTableToCsv CsvEngine FileHelpers | 更新日期: 2023-09-27 18:14:42
我使用FileHelpers从我的应用程序导出动态创建的数据。我有一个DataGridView,其列和行可以由用户编辑(添加,删除,操纵),所以我不知道什么数据最终传递给FileHelpers。
阅读动态创建一个CSV文件与FileHelpers指向我的CsvEngine。DataTableToCsv方法。不幸的是,此方法既不转义包含分隔符的字段,也不转义双引号和换行符。
如果我有一个预定义的类,我可以使用fieldquotes - annotation使FileHelper使用适当的格式,但由于情况并非如此,我不知道如何归档动态创建的数据。
//Edit: Some code/Current approach:
/// <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, ',');
}
任何想法?
当你不能使用预定义的类时,FileHelpers就不那么强大了。
然而,由于您在从DataGridView
转换时访问每个值,为什么不在那里处理转义呢?
foreach (DataGridViewCell cell in row.Cells)
{
line.Add(AddDoubleQuotesAndEscapeIfNecessary(cell.Value));
}