以好看的格式将WPF DataGrid导出到文本文件。文本文件必须易于阅读

以好看的格式将WPF DataGrid导出到文本文件。文本文件必须易于阅读,wpf,export-to-excel,export-to-text,Wpf,Export To Excel,Export To Text,有没有简单的方法将WPF数据网格导出到文本文件和.csv文件?我已经做了一些搜索,但看不到有一个简单的DataGrid方法可以做到这一点。通过使用DataGrid的ItemsSource,我已经(勉强)实现了一些功能。在我的例子中,这是一个结构数组。我使用StreamWriter和StringBuilder(详细信息可用)做了一些工作,基本上有: StringBuilder destination = new StringBuilder(); destination.Append(row.Cre

有没有简单的方法将WPF数据网格导出到文本文件和.csv文件?我已经做了一些搜索,但看不到有一个简单的DataGrid方法可以做到这一点。通过使用DataGrid的ItemsSource,我已经(勉强)实现了一些功能。在我的例子中,这是一个结构数组。我使用StreamWriter和StringBuilder(详细信息可用)做了一些工作,基本上有:

StringBuilder destination = new StringBuilder();
destination.Append(row.CreationDate);
destination.Append(seperator);  // seperator is '\t' or ',' for csv file
destination.Append(row.ProcId);
destination.Append(seperator);
destination.Append(row.PartNumber);
destination.Append(seperator);
我为数组中的每个结构(在循环中)执行此操作。这个很好用。问题是读取文本文件并不容易。数据可以在同一列中具有不同的长度。我想看看这样的东西: 2007-03-03 234238423823 823829923 2007-03-03 66 99 当然,我得到的结果是: 2007-03-03 234238423823 823829923 2007-03-03 66 99

我使用制表符分隔符并不奇怪,但我希望做得更好。在DataGrid中阅读当然很容易!我当然可以用空格填充短值,但这看起来相当混乱。我想可能有更好的办法。我也有一种感觉,这是一个常见的问题,而且以前可能已经解决过(希望在.NET类本身中)


谢谢。

我想目标是尽可能做到所见即所得。在这种情况下,我将:

  • 循环遍历所有DataGridRows,并为每个DataGridRows构建一个字符串[],其中包含每个DataGridCell中显示的数据。这对于大多数DataGridColumn类型来说都很简单。对于DataGridTemplateColumn,您需要使用绑定,然后使用convert.ToString()
  • 我还将跟踪每列中的最大字符串长度
  • 下一步取决于导出类型:

    • 对于csv导出,我会将每个字符串[]中的所有字符串附加在引号内,并在它们之间加逗号,然后将它们写出
    • 对于纯文本导出,我会将每个字符串[]中的所有字符串(用空格填充)附加到该列的最大字符串长度的1+,然后将它们写出

    使用实际的DataGridRow、DataGridCell和DataGridColumn对象的原因是为了准确地写出最终用户看到的内容。例如,您可以跳过隐藏列、在绑定中应用字符串格式、荣誉筛选/分组/排序等。

    我将使用该应用程序。复制网格的功能,选择全部,然后在代码中复制,然后您可以解析剪贴板帮助器数据,该数据采用csv、html和其他一些格式