Экспорт в Excel

отредактировано 05:21 Раздел: FastReport 4.0
У меня следующая проблема, пытаюсь сделать экспорт, используя опцию "Excel таблицы (OLE)". Есть столбец, формат отображения установлен как числовой, и колонки выводятся без использования апострофа, но Excel по-прежнему не признает его как текст. Проблема появилась, когда мы обновили FastReport до версии 4.10. Что может быть причиной?

Комментарии

  • отредактировано 05:21
    Для определения того, что текст - число, экспорт FR использует символы SysUtils.DecimalSeparator и SysUtils.ThousandSeparator; эти символы определяет код написанный разработчиками Delphi. Проблема в том, что на некоторых системах эти символы неправильные - они не совпадают с аналогичными символами которые показывает Windows в панели управления. Такие системы редки и как с этим бороться пока непонятно.
  • PNPPNP
    отредактировано 05:21
    Draeden написал: »
    Для определения того, что текст - число, экспорт FR использует символы SysUtils.DecimalSeparator и SysUtils.ThousandSeparator; эти символы определяет код написанный разработчиками Delphi. Проблема в том, что на некоторых системах эти символы неправильные - они не совпадают с аналогичными символами которые показывает Windows в панели управления. Такие системы редки и как с этим бороться пока непонятно.
    Достаточно перед экспортом брать системный сепаратор.
    procedure TfrxPreview.Export(Filter: TfrxCustomExportFilter);
    var
      ASeparator:Char;
      begin
      if FRunning then
        Exit;
     ASeparator := DecimalSeparator;
      DecimalSeparator := GetLocaleChar(GetThreadLocale, LOCALE_SDECIMAL, '.');
      try
        PreviewPages.CurPreviewPage := PageNo;
        if Report.DotMatrixReport and (frxDotMatrixExport <> nil) and
          (Filter.ClassName = 'TfrxTextExport') then
          Filter := frxDotMatrixExport;
        PreviewPages.Export(Filter);
      finally
        Unlock;
        DecimalSeparator := ASeparator;
      end;
    end;
    
  • отредактировано 05:21
    Draeden написал: »
    Для определения того, что текст - число, экспорт FR использует символы SysUtils.DecimalSeparator и SysUtils.ThousandSeparator; эти символы определяет код написанный разработчиками Delphi. Проблема в том, что на некоторых системах эти символы неправильные - они не совпадают с аналогичными символами которые показывает Windows в панели управления. Такие системы редки и как с этим бороться пока непонятно.

    Сделала тест. Символы, которые используются в качестве SysUtils.DecimalSeparator и SysUtils.ThousandSeparator в Windows такие же, как настроены в формате отображения отчета. Кроме того, клиент говорит, что до обновления FastReport до версии 4.10 все прекрасно работало.
    Странно, пишу символ в виде числа в Excel (без апострофа <´>), но формат колонки - текст. При XML-экспорте все хорошо, но структура отчета отображается неправильно. А при OLE - такая ошибка.
  • отредактировано 05:21
    PNP написал: »
    Достаточно перед экспортом брать системный сепаратор.
    Это делает системный код Delphi, точнее функция SysUtils.TFormatSettings.Create, но полученные значение где то теряются до вызова экспорта.
  • PNPPNP
    отредактировано 05:21
    Draeden написал: »
    Это делает системный код Delphi, точнее функция SysUtils.TFormatSettings.Create, но полученные значение где то теряются до вызова экспорта.
    SysUtils.DecimalSeparator - переменная для конкретной программы, не для всей системы. Если юзеру в конкретной программе нужен свой какой-то разделитель (что встречается сплошь и рядом) - не менять же в настройках системы (другим программам будет совсем не уютно :) ). А при экспорте это не учитывается и получается косяк.
    Хотя, судя по предыдущему посту топикстартера - дело может быть и не в этом.

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

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