Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт из FastReport в Excel, с сохранением типов данных 
:(
    Опции темы
Ravend
Дата 1.11.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.7.2005

Репутация: нет
Всего: 1



Привет, All!

пытаюсь экспортировать отчет из FR3 в Excel
(отчет - матричный
у числовых полей выставлен DisplayFormat:
DecimalSeparator = '.'
FormatStr = %.2f
Kind = fkNumeric)

возникла проблема с сохранением числовых данных
некоторые числа в Excel автоформатируются в дату (например 5.50)
как это можно отключить

спасибо

P.S.
в исходниках произходит формирование массива Variant и его передача в Excel, тоесть здесь явно формат не пропишешь smile

P.P.S.
если изменить DecimalSeparator на ',' то все числовые значения преобразуются в текст

PM MAIL   Вверх
Akella
Дата 1.11.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Наверное прийдется делать экспорт "ручками". Сначала задаём ячейке формат, а потом присваиваем значение.
PM MAIL   Вверх
Fedia
Дата 2.11.2006, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Информация к размышлению: 
Код

var
  Ar: array of array of Variant;
  Excel: Variant;
begin
  Excel:=CreateOleObject('Excel.Application');
  Excel.visible:=True;
  Excel.DisplayAlerts:=false;
  Excel.WorkBooks.Add();
  SetLength(Ar, 2, 2);
  Ar[0][0]:='5.50';
  Ar[0][1]:='5,50';
  Ar[1][0]:=5.50;
  Ar[1][1]:='test';
  Excel.WorkBooks[1].WorkSheets[1].Range['A1', 'B2']:=Variant(Ar);

  Excel.Quit;
  Excel:=null;
end;

У меня корректно отобразилось только значение Ar[0][0]:='5.50';, поэтому могу предложить два варианта решения задачи:
1. При заполнении массива Variant числа в него передавать как строки, преобразуя их при помощи функции FormatFloat.
2. Передавать в массив Variant непосредственно числа, а для столбцов Excel-я, в которые заносятся значения с плавающей точкой явно указать формат: "числовой".


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Ravend
Дата 2.11.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.7.2005

Репутация: нет
Всего: 1



спасибо за ответы, вроде что то стало получаться
но в исходниках FR есть вот такая строка:
Код

...
FExcel.Range.Style := 'S' + IntToStr(Obj.StyleIndex);
...

здесь стиль накладывается на всю страницу сразу
подскажите как наложить стиль на текущюю (оброабатываемую) ячейку?

спасибо
P.S.
в VBA не силен, а в их хелпе сколько не пытался найти необходимую информацию так и не смог smile
PM MAIL   Вверх
Akella
Дата 2.11.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



тут чётко указано
Цитата
.Range.

это не страница, а диапазон
знач зарпанее укажи диапазон

Код

FExcel.Range := ['A5','A5'];

PM MAIL   Вверх
Ravend
Дата 3.11.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.7.2005

Репутация: нет
Всего: 1



спасибо
ещё вопрос про эту же строку
Код

FExcel.Range.Style := 'S' + IntToStr(Obj.StyleIndex);

где
Obj.StyleIndex = 1
FExcel.Range.Style становиться $001acddc


ктонибудь в курсе как распарсить этот стиль?

P.S.
у меня делема:
- если стиль не ставить то числовые значения отображаются как цифры (ОК), но при этом пропадает выделения в текстовых ячейках (жирный, курсив);
- если применять стиль выборочно, то у тесковых ячеек цвет заливки белый, а у числовых его нет (в сочетании такое форматирование смотриться плохо);
- ну а если стиль применить ко всем ячейкам то все числа становяться текстом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.