Посмотрел файл. Результат экспорта ожидаемый. Сначала экспорт проверяет десятичный разделитель мемки - там пусто. Затем он берёт FormatSettings.DecimalSeparator - там точка. Получается, что в числе "123,456" запятая это просто ненужный символ с точки зрения экспорта, потому что десятичный разделитель это точка. Если в настройках мемки поставить запятую в качестве разделителя, то всё ок.
Да ничего он у вас не берет.
Модуль frxBiffConverter строка 414:
with obj.Style.DisplayFormat do
if DecimalSeparator <> '' then
Sep := AnsiChar(DecimalSeparator[1]);
, a если сделать так:
with obj.Style.DisplayFormat do
if DecimalSeparator <> '' then
Sep := AnsiChar(DecimalSeparator[1])
else
sep := SysUtils.DecimalSeparator;
то все экспортирует нормально.
А что за переменная FormatSettings.DecimalSeparator, где ее нужно установить?.
Насчет установки в мемке разделителя, по умолчанию в текущей версии он не устанавливается, а должен бы наверное быть равным SysUtils.DecimalSeparator
Есть такая хотелка, при SingleSheet = FALSE, выгружать количетсво страниц как в дизайнере,
например 2 страницы на каждой по гриду, эуспортировать с 2 страницами, на каждой странице нужное количество листов.
В 1 отчете на 1 странице Excel должна быть таблица с доходами (лист 1-3), на второй с налогами (лист 5-6)
2 отчет аналогично в Excel должно быть 2 страницы, на каждой листов сколько получится
Нам тоже что-то такое нужно. Может у листов FR добавить свойство типа "начало нового раздела" или "имя раздела".
А при экспорте в эксель-листы создавать по именам разделов.
Может быть в качестве имени раздела можно использовать поле TfrxReportPage.OutlineText?
Напоролся на странный глюк..
Если у ячейки есть FrameWidth, FrameStyle (если отрабатывает procedure XFBorder(var b: TBiffLine); ... if s.FrameWidth > 1e-6 then блаблабла ), то в экселе при нажатии на такую ячейку и выборе "формат ячейки" - ничего не происходит.. Т.е. не появляется окно свойств.
косяк где-то в этом куске:
procedure TBiffXF.Flush(Stream: TBiffStream);
...
X.BStyle1 :=
$0000000f and LongWord(L.Style) or
$000000f0 and (LongWord(R.Style) shl 4) or
$00000f00 and (LongWord(T.Style) shl 8) or
$0000f000 and (LongWord(B.Style) shl 12) or
$007f0000 and (LongWord(L.Color) shl 16) or
$3f800000 and (LongWord(R.Color) shl 23) or
$40000000 and (LongWord(LTRB) shl 30) or
$80000000 and (LongWord(LBRT) shl 31);
...
Да, я исправил это. Там была проблема в том, что для ячейки с чёрной рамкой экспорт применяет чёрный цвет с индексом ноль. В документации сказано, что в палитре цветов первые восемь индексов заняты стандартными цветами: чёрный, белый, красный и т.д. Однако Excel не может показать свойства ячейки которая использует цвета с индексами 0..6 (как ни странно, индекс 7 не смущает Excel). Я обошёл эту проблему за счёт игнорирования первых 7-ми цветов в палитре: экспорт ведёт себя так, будто их нет и добавляет в палитру чёрный цвет не смотря на то, что он уже есть под индексом ноль.
Bali, по поводу вашего work.zip. Это не сложно сделать: надо будет добавить к экспортам методы StartPageGroup/FinishPageGroup и немного изменить движок. Проблема в том, что сейчас код движка трансформируется в FR5 и новые фичи не появятся до релиза FR5. Лучше всего если вы откроете тикет и подробно опишите, что нужно (можете прямо своё сообщение скопировать и приложить этот work.zip).
Да, я исправил это. Там была проблема в том, что для ячейки с чёрной рамкой экспорт применяет чёрный цвет с индексом ноль. В документации сказано, что в палитре цветов первые восемь индексов заняты стандартными цветами: чёрный, белый, красный и т.д. Однако Excel не может показать свойства ячейки которая использует цвета с индексами 0..6 (как ни странно, индекс 7 не смущает Excel). Я обошёл эту проблему за счёт игнорирования первых 7-ми цветов в палитре: экспорт ведёт себя так, будто их нет и добавляет в палитру чёрный цвет не смотря на то, что он уже есть под индексом ноль.
Ура! Теперь нормально работает. Спасибо.
Тут попутно еще один вопрос нарисовался - а есть ли возможность в ячейках использовать формулы?
Очень было бы удобно.
Нельзя пока что. В бинарном xls файле формулы записываются в виде разновидности машинного кода и чтобы экспортировать формулы надо написать простой компилятор. Как только руководство сочтёт целесообразным потратить время на эту фичу - я её сделаю
См. в changes.txt В версии 4.11.11 вроде бы нет. На следующей неделе (18-го июля) будет новая сборка и там в BIFF появится свойство RowHeightScale для растягивания ячеек.
На следующей неделе (18-го июля) будет новая сборка и там в BIFF появится свойство RowHeightScale для растягивания ячеек.
В общем то уже есть новая версия 4.11.12 от 19.07.2011. Там как я понимаю уже есть и RowHeightScale и другие исправления для biff8, про которые шла речь в этой теме ?
Есть проблемы с экспортом - если в отчете имеются картинки (например, объект штрихкод, который преобразуется в картинку), то файл .xls невозможно открыть в офисе 2003. Офис 2010 и 2007 открывают такой файл, но выводят сообщение что файл поврежден. Если в опциях экспорта снять галочку "изображения" - то файл открывается нормально.
Комментарии
Да ничего он у вас не берет.
Модуль frxBiffConverter строка 414:
, a если сделать так:
то все экспортирует нормально.
А что за переменная FormatSettings.DecimalSeparator, где ее нужно установить?.
Насчет установки в мемке разделителя, по умолчанию в текущей версии он не устанавливается, а должен бы наверное быть равным SysUtils.DecimalSeparator
Вы писали:
Сейчас поставлю 4.11.8.
Есть такая хотелка, при SingleSheet = FALSE, выгружать количетсво страниц как в дизайнере,
например 2 страницы на каждой по гриду, эуспортировать с 2 страницами, на каждой странице нужное количество листов.
Нам тоже что-то такое нужно. Может у листов FR добавить свойство типа "начало нового раздела" или "имя раздела".
А при экспорте в эксель-листы создавать по именам разделов.
Может быть в качестве имени раздела можно использовать поле TfrxReportPage.OutlineText?
Если у ячейки есть FrameWidth, FrameStyle (если отрабатывает procedure XFBorder(var b: TBiffLine); ... if s.FrameWidth > 1e-6 then блаблабла ), то в экселе при нажатии на такую ячейку и выборе "формат ячейки" - ничего не происходит.. Т.е. не появляется окно свойств.
косяк где-то в этом куске:
Тут попутно еще один вопрос нарисовался - а есть ли возможность в ячейках использовать формулы?
Очень было бы удобно.
Сейчас последняя версия FR это 4.11.11.
Вопрос: Есть ли там изменения касательно экспорта Biff8, которые обсуждались в этой теме ?
В общем то уже есть новая версия 4.11.12 от 19.07.2011. Там как я понимаю уже есть и RowHeightScale и другие исправления для biff8, про которые шла речь в этой теме ?
Наблюдается в версиях как 4.12 так и 4.12.1