Экспорт сгруппированных AdvancedDataGrid в виде текста CSV

Я пытаюсь экспортировать AdvancedDataGrid в CSV. Это достаточно просто для неиерархических данных, но при использовании HierarchicalCollectionView для отображения данных с деревьями это становится сложнее.

Есть ли предложения о том, как получить доступ к каждой из ячеек так, как они появляются на экране, когда все узлы развернуты?


person Senior    schedule 16.09.2010    source источник


Ответы (2)


Если вы развернули все узлы, как вы упомянули (вы можете использовать для этого функцию AdvancedDataGrid's expandAll()), вы можете затем запустить AdvancedDataGrid через следующий служебный класс экспорта CSV для доступа к каждой из ячеек, как они появляются на экране:

http://onyxmueller.net/2011/08/15/advanceddatagrid-csv-export-utility-class/

Однако, имея дело с HierarchicalCollectionView в качестве поставщика данных, я обнаружил, что лучше написать некоторую собственную логику для «сглаживания» данных для экспорта CSV.

person Onyx    schedule 18.08.2011

Иерархические данные плохо отображаются в CSV, который по сути является плоским. По сути, вы пытаетесь записать вложенные объекты в электронную таблицу.

Доступ к данным не так уж и сложен, вы можете просто рекурсивно работать с getChildren () в коллекции.

Хард-бит записывает его в файл CSV таким образом, чтобы его можно было получить позже. Единственный действительно хороший способ сделать это - игнорировать тот факт, что вы пишете в CSV. Как только вы дойдете до дочернего поля корневого объекта, вы напишете ужасный механизм синтаксического анализа массива.

Мое решение? Запишите его в JSON и вставьте в одну ячейку CSV. В конечном итоге вы избавите себя от невероятной боли.

person Gregor Kiddie    schedule 17.09.2010
comment
Да, но вложенные объекты можно легко нормализовать в таблицу, просто добавив префиксы к их родительским узлам в каждой строке. Я сделал это путем обхода модели данных, но это означает, что соответствующее средство визуализации столбца не вызывается. - person Senior; 20.09.2010