Форматирование данных и экспорт в Excel

отредактировано 22:09 Раздел: FastCube
Имею таблицу данных, в ней есть числовые поля с плавающей точкой, которым я задал формат отображения с разделителем разрядов (например, для выручки формат есть ",0.00"). Точнее нужным полям dataset-а задан формат как для их отображения например в обычном grid-е, а при открытии куба эти форматы копируются как есть в соответствующие поля куба (может для полей куба формат должен задаваться по-другому?). Так вот, в самой таблице все отлично, но когда начинаешь сохранять ее в Excel, то информация переносится почти как текст вместе с этим псевдопробелом, и до тех пор, пока в Excel-е не сделать замену этого псевдопробела на пустое место, с сохраненной инфой невозможно работать как с числами. Можно ли это как-то победить?

Та же самая история когда открываешь по двойному клику детализацию ячейки, а может это и еще хуже, поскольку при этом появляется дополнительная форма, а в нее вообще можно влезть хоть какими-то обработчиками?

Вот вроде мелочь, а неприятно и народу страшно не нравится.

Комментарии

  • отредактировано 22:09
    Приветствую.

    Не могли бы Вы уточнить:
    1. Версия FastCube
    2. Речь идет о экспорте или о копировании через буфер обмена?
    3. О значении каких полей идет речь: показатель или измерение?

    С уважением, Олег
  • отредактировано 22:09
    Уточняю:

    1. FastCube версия 1.5
    2. Пробовал и копировать через буфер, и экспортом, а в форме детализации через стандартную кнопку экспорта - эффект одинаковый
    3. Речь ведется о показателях, т. е. наполнении таблицы

    Более того, как я потом убедился, этот эффект проявляется даже если не задавать форматы, т.е. экспортируется также как есть на экране, убрать этот псевдопробел удалось только поставив в DefaultFormat.FormatFloat параметр Kind в значение fkText, причем сделать это в момент формирования куба
  • отредактировано April 2010
    Приветствую.

    Советую обновиться до последней текущей версии (1.6.6).

    Что касается форматов:
    -При экспорте в Excel основной таблицы, для числовых значений показателей не используется формат, указанный в показателе: для преобразования в строку применяется стандартная функция S := FloatToStr( R ).
    Проверьте пожалуйста!

    -При экспорте в Excel основной таблицы, для значений измерений используется формат, указанный в соответствующем поле.

    -При экспорте в Excel таблицы детализации, используется формат, указанный в соответствующем поле.
    Исправлю.

    -При копировании через буфер обмена, используется формат, указанный в соответствующем поле или показателе.
    Исправлю.

    DefaultFormat используется при создании полей куба для инициализации их форматов. Не стоит устанавливать для FormatFloat параметр Kind в значение fkText, лучше FormatStr установить в '%2.2f'. После активации куба Вы можете для любого поля или показателя индивидуально поменять формат отображения.

    Так-же имейте ввиду, что формат полей сохраняется в при сохранении куба, а формат показателей при сохранении схемы.

    Как вариант, Вы можете обрабатывать событие OnExportTo, возникающее при вызове экспорта основной таблице, и в нем устанавливать нужный формат показателя, делать экспорт (придется вызывать его самостоятельно), а затем восстанавливать формат обратно.

    С уважением, Олег.
  • отредактировано 22:09
    Продолжил я экспериментировать (а можно сказать - извращаться, другое слово подобрать сложно для описания того, что пытался делать) с экспортом таблицы. Согласен с тем, что при экспорте с использованием класса TfcExportHTML все проходит нормально, этот вопрос снимается. А вот когда я попытался что-то сделать с таблицей детализации, то все получается как-то очень странно...

    1. Нашел я внутри компонента такую функцию TfcDetailGrid.ExportTo и воткнул в нее выдавать сообщения что было запихано в List, а также во вложенной функции TD параметра AText, переустановил компоненту, предварительно удалив все файлы типа obj, dcu и т.д. - ни одного сообщения я не получил, при этом файл сформировался. Более того, у меня не получается эту процедуру отлаживать, точку остановки удается поставить только на строчку создания объекта List и почти все внутренние действия потом проскакиваются. Хотел в нее встроить удаление этого псевдопробела, но получил вот такой интересный эффект. (извиняюсь если очень сложно описал ситуацию)

    2. А вот тут просьба объяснить как работает событие OnDataDblClick у основной таблицы. Я нашел в классе таблицы функцию DefaultDataDblClick и переписал ее в обработчик этого события, собираясь дальше кое-что в нем поменять, но в результате даже при наличии обработчика вызывается стандартная DefaultDataDblClick, а в этот обработчик даже не заходит. Может для перехвата события надо установать еще какое-то свойство?

    На всякий случай сообщаю, что работаю в C++Builder 6, если это важно
  • отредактировано 22:09
    Приветствую.

    Чтобы работал обработчик события OnDataDblClick, Вам надо отключить опцию mdgoDrillThroughOnDblClick в гриде.

    В обработчике Вы можете создать собственную форму для отображения детализации.

    Получить список детализации можно у слайса:
    function GetDetailInfoVis(XAxisIndex, YAxisIndex: Integer; AWithCaption: boolean = True; AUseCaption: boolean = True): TfcDetailInfo;

    AUseCaption - как раз и указывает, использовать в детализации формат или показывать значения как есть.

    TfcDetailInfo = class
    public
    property Items[AFieldIndex, AIndex: Integer]: Variant read GetItems write SetItems; default;
    property Alignments[AFieldIndex: Integer]: TAlignment read GetAlignments write SetAlignments;
    property FieldCount: Integer read FFieldCount;
    property Count: Integer read FCount;
    end;

    По вопросу, почему у Вас не получается работа с исходными кодами куба в C++Builder 6, я вряд-ли смогу помочь.
    В принципе никаких сложностей возникнуть не должно.

    С уважением, Олег.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.