Поскольку задача вывода отчетов в Excel все-таки возникает достаточно часто, предыдущие наработки были доведены до ума, в результате чего "канал вывода в Excel" стал более функциональным, а кроме того, появился некий скелет отчета, собирающего данные на сервере и затем использующего этот канал вывода для создания Excel-файла на клиенте, в т.ч. на несколько листов.
Одной из "заковырок" вывода данных в Excel через ADO.Recordset является возникающая порой необходимость как-то избавиться от "незначащих" значений (в основном нулей и дат datenull()) - эта задача и возможные решения, в частности,
обсуждаются в исходной теме, благодаря которой и появились эти классы. В доработанном классе вывода в Excel эта задача также была решена, правда, несколько иначе: при необходимости в той или иной колонке табличных данных производится замена средствами самого Excel "незначащих" значений на то, что возвращает COMVariant::createNoValue().
PS. Проект приведен для DAX3