Экспорт в Excel

отредактировано 21:43 Раздел: FastReport 3.0
Есть отчёт с котором одно из полей номер телефона
экспортирую отчёт в Excel, а он мне эти поля пишет в экпоненциальном виде.
8,91+E12. Можно ли как-нить с этим справиться? Версия 3.10.

Комментарии

  • отредактировано 21:43
    В настройках экспорта есть флажок As text, включите его.
  • отредактировано 21:43
    Александр, этот флажок ведёт себя я бы сказал довольно выборочно. Я вам уже высылал файл fp3, из которого если сделать экспорт в excel сразу видно, что большие числа он всёравно выдаёт как число в экспотенциальном виде. С другой стороны в старых версиях экспорт работал, нормльно но раньше судя по исходникам был немного другой принцип работы с результирующим массивом. Спасает только экспорт через XML, но он нормально обрабатывается только Excel XP/2003, что ни есть хорошо, либо правкой исходников:
    unit frxExportXLS;
    .............
    {$IFDEF Delphi6}
                CurValIsFloat := TryStrToFloat(s, conv);
                if CurValIsFloat then
                 if not FAsText then
                  ArrData^[y + FMatrix.Height * (x - 1)] := conv
                 else
                  ArrData^[y + FMatrix.Height * (x - 1)] := ''''+s {вот это помогает}
                else
    {$ENDIF}
                  ArrData^[y + FMatrix.Height * (x - 1)] := s;
    ............
    
    но потом приходится делать дополнительные телодвижения, чтобы в случае необходимости некоторые числа привести к нормальному виду.

    Если надо могу ещё раз выслать fp3.
  • отредактировано 21:43
    Markus прав, этот флажок не срабатывает,
    Markus спасибо за совет!
  • отредактировано 21:43
    Markus написал:
    unit frxExportXLS;
    .............
    {$IFDEF Delphi6}
                CurValIsFloat := TryStrToFloat(s, conv);
                if CurValIsFloat then
                 if not FAsText then
                  ArrData^[y + FMatrix.Height * (x - 1)] := conv
                 else
                  ArrData^[y + FMatrix.Height * (x - 1)] := ''''+s {вот это помогает}
                else
    {$ENDIF}
                  ArrData^[y + FMatrix.Height * (x - 1)] := s;
    ............
    
    Чтобы, напимер, номера документов типа 00234 выводились при экспорте отчета с ведущими нулями можно немного доработать твое предложение (хотя тоже не идеал и есть некоторые ограничения...):
    unit frxExportXLS;
    .............
    {$IFDEF Delphi6}
                CurValIsFloat := TryStrToFloat(s, conv);
                if CurValIsFloat then
                  if not AsText and (Obj.DisplayFormat.Kind = fkNumeric) then
                    ArrData^[y + FMatrix.Height * (x - 1)] := conv
                  else
                    ArrData^[y + FMatrix.Height * (x - 1)] := ''''+s
                else
    {$ENDIF}
                  ArrData^[y + FMatrix.Height * (x - 1)] := s;
    ............
    

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

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