Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
В отчете несколько колонок с датами формата dd.mm.yyyy hh:nn:ss. В самом отчете выставил DisplayFormat = dd.mm.yyyy hh:nn:ss.
Для экспорта использую компонент frxXLSXExport1.
После экспорта становлюсь на ячейку уже в MS Excel 2013, а она у меня формата "Общий", а должна быть "Все форматы" (ДД.ММ.ГГГГ чч:мм:сс).
Причем, если я изменю содержание ячейки (добавлю пробел и удалю пробел), то MS Excel преобразует в нужный формат. Значит содержимое не кривое.
Что я не учел?
16 фев 21, 16:53    [22281721]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
cptngrb
Причем, если я изменю содержание ячейки (добавлю пробел и удалю пробел), то MS Excel преобразует в нужный формат. Значит содержимое не кривое

одно не вытекает из другого. Просто Excel при редактировании сам уже подумал и переделал.

Сообщение было отредактировано: 16 фев 21, 16:53
16 фев 21, 17:00    [22281727]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
Кроик Семён, а как fastreport сказать, чтобы он за Excel подумал?
16 фев 21, 17:04    [22281729]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
не могу посмотреть, но я бы начал с изучения класса ТfrxXLSXExport, если у вас есть исходники.
Возможно, у него есть свойство типа DateTimeFormat или что-нибудь подобное
16 фев 21, 17:09    [22281734]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
есть у него функция, которая возвращает строку

function FormatData(const Value: Variant; AFormat: TfrxFormat = nil): WideString; 
///...

fkDateTime:
        Result := FormatDateTime(AFormat.FormatStr, Value);
//.....


но она отвечает только за отображение
16 фев 21, 17:13    [22281738]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
_Den_Z_
Member

Откуда:
Сообщений: 115
cptngrb,
С форматированием на самом деле не всегда все просто, в результирующий отчет чаще всего попадает строка. Т.к. поле может содержать несколько выражений вида [Date1] to [Date2]. Которое уже не отформатируешь по формату.
Для одиночных выражений можно добавить, в biff8 они обрабатываются. Добавил задачу в трекер, думаю в ближайших сборках добавим.
16 фев 21, 17:14    [22281740]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
cptngrb,

если хотите, вот вым обходной манёвр

1) SQL датасета пусть возвращает не DateTime - поле, а STRING сразу отформатированный как нужно. В Oracle, например, это функция to_char

2) Соответственно, в FastReport'e выводиться уже будет сразу правильно и никакой DisplayFormat не нужен

3) А вот как Excel воспримет экспортированные "в-строки-записанные-даты" - это только опытным путём, поймёт ли он, что это дата/время, или так и останется с мнением, что это строка. Но в любом случае, отображение будет как вы и хотели
16 фев 21, 17:42    [22281769]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
отображается правильно, а вот сортировка-фильтрация в самом Excel нет, так как не понятно Excel что лежит в ячейке.
16 фев 21, 17:50    [22281778]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
cptngrb,

хотелки хотелки, теперь вот ещё и сортировку подавай ...

Вполне может оказаться (но это не обязательно), что имеет место технологический тупик ...

Kстати, если это своей кривостью не переходит черту допустимой кривизны, то форматируйте строку как YYYY-MM-DD hh:mi:ss. Сортировка в Excel'e тогда будет работать и правильно. А про простую фильтрацию по годам / месяцам можно будет забыть
16 фев 21, 18:09    [22281799]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
пользователям нужно чтобы как родной был. эх, придется ручками экспортировать, а так хотелось программировать мышкой...
16 фев 21, 18:48    [22281833]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
cptngrb,

вы можете экспортировать привязанный к MasterBand датасет. Но не из FastReport'a, а отдельно.
Вот, ознакомьтесь с топиком: Процедура ExportDatasetToExcel на базе XLSReadWrite (обертка)

Сообщение было отредактировано: 16 фев 21, 19:21
16 фев 21, 19:23    [22281860]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
Кроик Семён, я использую этот компонент в других проектах, но требования заказчика - никаких новых компонент
17 фев 21, 11:10    [22282089]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
cptngrb,

может это из-за цены?
Если так, попробуйте уломать хотя бы на SMExport suite (Full suite with sources: 50,- EUR)


Хотя есть и более интересный способ:

- смотрим на начинку ТfrxXLSXExport
- там, наверняка, под капотом найдется целый набор функций / или даже юнитов для экспорта в Excel
- находим для себя полезные функции для экспорта Worksheet'ов / строк / ячеек и т.д.
- и строим на этой базе свой собственный экспортер в *.xlsx

я бы и сам посмотрел, но у меня старая версия FR, там ещё не было экспорта в *.xlsx

Сообщение было отредактировано: 17 фев 21, 11:40
17 фев 21, 11:43    [22282122]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6694
P.S.

ну то есть, возможно, существует файл "frxExportXLSX.pas" и в нём класс "TfrxExcelXLSX" или как-нибудь похоже
17 фев 21, 15:48    [22282343]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
Кроик Семён, спасибо. Пока ручками справляюсь.
17 фев 21, 18:32    [22282414]     Ответить | Цитировать Сообщить модератору
 Re: FastReport 6.6 export xlsx. Не правильный формат ячеек даты  [new]
cptngrb
Member

Откуда:
Сообщений: 663
Осталось научиться красоту наводить (цвета, шрифты) и вообще шик будет
17 фев 21, 18:33    [22282415]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить