Я пользуюсь старым добрым HTML.

Правда у меня отчёты только табличные и никакие другие. Создаю инишник, в котором:
1. Заголовок отчёта
2. Текст, который между заголовком и таблицей
3. Русские названия полей таблицы
4. SELECT для табличной части
5. SELECT для суммирующей части
6. "Подвал"

И - вуа-ля... Пользователь по этому образцу делает свой инишник и генерит HTML-отчёт на его основе. Никакой перекомпиляции.
Кстати, для OpenOffice Calc тут человек делал очень интересный компонент для построения отчётов, надо только поискать поиском. Отчёт генерится на основе файла-шаблона. Компонент называется "ooreports". Мне очень понравился.
