Тип данных при экспорте в Excel
После экспорта отчета в Excel, с числами нельзя проводить различные операции (SUM, AVG,формулы), т.е. Excel не воспринимает их как числа. Как Репорту сказать нужный формат поля, чтоб при экспорте он сохранился ? FR 3.09
Комментарии
InterBase 5.6
Delphi 7.0
FR 3.09
Отчет формируется хранимой процедурой
тип поля PRICE:DOUBLE PRECISION
MasterData.DataSet=frxDBDataset1
На нем лежит Memo1, в теле мемо прописано [frxDBDataset1."PRICE"],
Memo1.DisplayFormat=%2.2n
больше в мемо ничего не менялось. При экспорте в Excel с полем PRICE работать как с числами нельзя, показывает Format Cells - General и конвертить в Number не хочет.
Ткните носом пожалуста
ЗЫ Очень неудобно смотреть даже на шести-семи-значные числа без разделителей. А с разделителями нельзя использовать экспорт... вернее, кому он нужен без возможности операций над результатми отчёта.
При экспорте в Эксель всё считает. Всем спасибо.
Если экспортировать в Excel строку, форматированную как "строка" и состоящую из цифр , то "общий формат" затирает нули в начале (считая строку числом). В артикулах это встречается сплошь и рядом. А артикул без нулей в начале - это уже другой артикул.
Апостроф в начале, уважаемые разработчики, это криво. Некотрые надстройки Excel его воспринимают именно как апостроф и отказываются считать эквивалентными значения с апострофом и без него.
Memo.DisplayFormat.kind=fkNumeric
когда Memo.DisplayFormat.FormatStr<>'' тогда убераем все пробелы в строке, передаем строку в эксель и делаем формат строки в экселе равный Memo.DisplayFormat.FormatStr.
Как-нибудь возможно решить эту проблему?
Если есть тысячные разделители (формат указан в самом FR), то кидается как текст... филды создаются динамически. То есть статически они не добавлены ни в TADOQuery, ни в TADOStoredProc...
Вопрос очень наболевший, и очень бы хотелось получить его решение.
FR 3.15 + D6 upd2
P.S. Написал несколько сумбурно... но думаю суть проблемы понятна...
в TfrView добавил два свойства
NativeDataType:word (vartype от типа variant)
NativeDigit:string - число ДО форматирования (строка - чтобы не заморачиваться с сохранением в поток разных типов Currency и т.п.)
Меняется формат frp (frf не затрагивается)
В InternalOnGetValue сохраняется тип и число (если число)
В ExpandVariables всякие проверки, что в мемо _только_ одно число, а не, например, два числа двумя строками.
В экспорте в excel остается только правильно записать формат и если тип число - то NativeDigit, а не отформатированный текст.
Правда делал я все это на fr2.45
"Поверхносные" решения приводили к тому, что excel начинал всякие номера типа номер документа '00001' преобразовывать к цифрам, получалось 1.
А длинные номера, например, номер банковского счета - вообще к форматам типа '4E19'
Господа разработчики, отрегагируйте что ли... Вам не кажется, что эту проблему надо решать как то? Или вам надо выложить код?
В пакете отчётов к софту просто невозможно предусмотреть все моменты, а без нормального форматирования обрабатывать данные отчёта внешними приложениями не всегда удобно...