Экспорт в Excel
Хочу купить FastReport3, но некоторые проблемы с экспортом в демо-версии не дают покоя. Поиски по документации и форуму ничего не дали.
Окружение: WinXP SP2 Rus, Delphi6, FR3Demo, MS Office 2003, в качестве разделителя разрядов в Regional Settings стоит пробел.
Отчет формируется прекрасно, в Excel тоже все хорошо выглядит, НО: числа экспортируются как текст (например, '10 000'), а надо иметь возможность проводить с ними некоторые математические операции.
Ряд экспериментов показал, что если в программе написать ThousandSeparator=' ', то в Excel в ячейках с числами появляются зеленые треугольнички с сообщением "Число отформатировано как текст" и в принципе его можно преобразовать в число путем дополнительной операции, но это не понравится заказчику.
Если же в программе поставить ThousandSeparator=',' , то в Excel уже просто все так как надо (и разделитель разрядов - пробел, и числа воспринимаются как числа), но зато в самом отчете (в программе) тысячи от сотен отделяются запятой (это правильно, но надо, чтобы был пробел).
Если бы у фильтров экспорта были события OnBeforeExport и OnAfterExport, проблема бы решилась изменением ThousandSeparator на ',' перед экспортом и сразу обратно на пробел после, но событий таких нет...
Что делать?
Заранее благодарен за все предложения, особенно за комментарии от разработчиков FastReport
Окружение: WinXP SP2 Rus, Delphi6, FR3Demo, MS Office 2003, в качестве разделителя разрядов в Regional Settings стоит пробел.
Отчет формируется прекрасно, в Excel тоже все хорошо выглядит, НО: числа экспортируются как текст (например, '10 000'), а надо иметь возможность проводить с ними некоторые математические операции.
Ряд экспериментов показал, что если в программе написать ThousandSeparator=' ', то в Excel в ячейках с числами появляются зеленые треугольнички с сообщением "Число отформатировано как текст" и в принципе его можно преобразовать в число путем дополнительной операции, но это не понравится заказчику.
Если же в программе поставить ThousandSeparator=',' , то в Excel уже просто все так как надо (и разделитель разрядов - пробел, и числа воспринимаются как числа), но зато в самом отчете (в программе) тысячи от сотен отделяются запятой (это правильно, но надо, чтобы был пробел).
Если бы у фильтров экспорта были события OnBeforeExport и OnAfterExport, проблема бы решилась изменением ThousandSeparator на ',' перед экспортом и сразу обратно на пробел после, но событий таких нет...
Что делать?
Заранее благодарен за все предложения, особенно за комментарии от разработчиков FastReport
Комментарии
http://www.fast-report.com/ru/forum/index....&highlite=excel
http://www.fast-report.com/ru/forum/index....owtopic=471&hl=
Но ни здесь, ни в других темах нет ответов - есть только констатация наличия проблемы. Версия у меня - демо, так что исходники покопать не могу не из-за лени.
Кратко мой вопрос можно сформулировать так:
Как добиться того, чтобы и в отчете, и в результате экспорта этого отчета в Excel в качестве разделителя разрядов использовался пробел и при этом числа в Excel обрабатывались как числа (чтобы с ними можно было проводить математические операции).
Сможете решить такую задачу?
Есть НЕЧТО в виде текста, есть формат объекта. Нужно определить:
1. Попадает это нечто под этот формат или нет
2. Если попадает, то попробывать преобразовать получившееся к определённому типу (тоже непонятно - а к какому именно ?)
3. Повторять цикл пока не закончится список форматов.
Насколько я понимаю проблема именно в этом, т.к. экспорт оперирует уже с текстом, который получился в объекте FR и понятия не имеет - какие там типы (не путать с форматом !!!) использовались при генерации результата.
Т.е. нужно решить обратную задачу (имеем текст и формат - нужно определить и получить исходное "значение" объекта FR до его форматирования).
Вот это http://www.fast-report.com/en/forum/?p=/discussion/471 хорошо читал ? Похоже что нет )
При экспорте в ячейку пишется VARIANT - при этом происходит автоматическое преобразование типов - поставь вместо разделителя дробной части не запятую, а точку - и экспорт перестанет понимать что это число )
Ладно, я согласен, что пишется Variant (с точкой тоже попробовал). Получается, резюме - ничего нельзя сделать? А что насчет событий у фильтров экспорта - про них даже в мануале пишут, а в реальности - нет их.