Для меня необходимо было обрабатывать большие эксемельки (от 30Мб). Эксель на них рушится от нехватки памяти и оставляет пустые строки в середине таблицы.
При этом у моих xml нет стилей и впомине.
Посмотрел аналогии, ничего путного не нашел и написал свою обработку.
Обращаю внимание, данное решение имеет смысл ТОЛЬКО для xml без xslt! Для эксемелек со стилями напишите свою процедурку, которая будет работать в разы быстрее.
Немного о механизме:
- xml читается "вдумчиво", дети объекта и вложенные таблицы наследуют реквизиты родителя.
- Вложенные таблицы расскладываю аккуратно как это делает Эксель (не перемножаются, а каждая строка вложенной таблицы объекта xml выкладывается отдельной результирующей строкой).
- Обработка не имеет ограничений ни по количеству реквизитов, ни по количеству уровней вложенности. Работает в рекурсии.
- Также реализовал здесь "умную" фильтрацию колонок. Т.е. без "умной" фильтрации, если Вам не нужны колонки с вложенной таблицей и без них "свернуть" таблицу, то таки останутся лишние пустые строки. Я реализовал фильтр колонок, который не создает этих пустых строк. В данной обработке фильтр не вывел на интерфейс, но весь функционал оставил. Доработайте сами.
- Все реализовывал отдельными процедурами. Чтобы Вам проще было встраивать себе в систему.
Как обычно, приветствую комментарии и предложения!