Экспорт DataGrid WPF в текстовый файл в приятном формате. Текстовый файл должен быть легко читать

StackOverflow https://stackoverflow.com/questions/3049887

Вопрос

Есть ли простой способ экспортировать DataGrid WPF в текстовый файл и файл .csv? Я сделал несколько поисков и не вижу, что есть простой метод DataGrid для этого. У меня есть что-то работает (едва), используя элементыSource из DataGrid. В моем случае это массив структур. Я делаю что-то с помощью Streamwriters и StringBuilders (доступные детали) и в основном имеют:

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 823823823 823829923 2007-03-03 66 99 и, конечно, я получаю что-то вроде: 2007-03-03 234238423823 823829923 2007-03-03 66 99

Неудивительно, что я использую Tab Delimiters, но я надеюсь сделать лучше. Это, безусловно, легко читать в DataGrid! Конечно, я мог бы, есть какая-то логика, чтобы прокладывать короткие значения с пробелами, но это кажется довольно грязным. Я думал, что может быть лучшим способом. У меня также есть ощущение, что это распространенная проблема, и тот, который, вероятно, был решен раньше (надеюсь, в пределах самих классов .NET).

Спасибо.

Это было полезно?

Решение

Я предполагаю, что цель - быть максимально как можно более WYSIWYG. В этом случае я бы:

  1. Структура через все Datagridrows и для каждой строки строки [], содержащие данные, отображаемые в каждом DataGridCell. Это легко для большинства типов DatagridColumn. Для DataGridTeMPlateColumn вам нужно будет использовать привязку, затем преобразуйте .toString ().
  2. Я также отслеживал максимальную длину строки в каждом столбце, как и сделал это.

Следующий шаг зависит от типа экспорта:

  • Для экспорта CSV я бы добавил все строки в каждой строке [] внутри цитата с запятыми между ними и выписывает их.
  • Для экспорта простого текста я бы добавил все строки в каждой строке [], дополненную пробелами до 1+ максимальной длины строки для этой колонны и записать их.

Причина использования фактического DataGridrow, datagridcell и объектов datagridcolumn опускает именно то, что видит конечный пользователь. Например, вы можете пропустить скрытые колонны, применить форматы строки в привязке, честь фильтрации / группировки / сортировки и т. Д.

Другие советы

Я бы использовал функцию application.copy of the grid, выберите все, а затем копировать в код, затем вы можете разбирать данные помощника в буксире обмена, который находится в CSV, HTML и нескольких других форматах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top