Экспорт в Excel: символ рубля и денежный тип поля

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Moneo
новенький
Сообщения: 21
Зарегистрирован: 21.03.2017 16:04:01

Экспорт в Excel: символ рубля и денежный тип поля

Сообщение Moneo »

Добрый день. Использую lazarus 3.6.4, OLE, excel 2016, win7 x64 rus, при записи макроса в excel перевода в денежный тип и его запуске на других диапозонах все работает, но если вызывать команду из lazarus, то выводит доллар и формат похоже не такой:

Код: Выделить всё

ExcelApp.WorkBooks[1].WorkSheets[1].Range('C:C').NumberFormat:= '#,##0,00 $';


Пробовал менять доллар на ₽, но выводит в ячейку 1/2 и при входе в ячейку 1/2 исчезает. Fpspreadsheet не предлагайте, потому что он не умеет делать гистограммы.
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

явно, старая проблема с кодировкой. В экселе win-1252 а в Лазарусе utf8 используй соответствующий перекодировщик.
SSerge
энтузиаст
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Сообщение SSerge »

Лекс Айрин писал(а): win-1252


West europe ISO, да? :mrgreen:

Лекс Айрин писал(а):используй соответствующий перекодировщик


И где знак рубля расположен в байтовых кодировках dos/windows? Нет там места для этого символа, просто исторически.
Перекодировщик его отправит в знак вопроса.
Было бы более корректно, если б сказали "не используйте функции OLE, работающие с байтовыми строками (не используйте функции OLE из API, в имени которых нет прямого указания на работу с WideString, ака постфикс "w")
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

SSerge, мда.. я и забым, что знак рубля новый символ(((
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Да абсолютно понятно, что проблема в шрифтах, т.к. символ рубля, присутствует только в одном шрифте в мире (хотя может сейчас уже и больше). Посмотрите его(символа рубля) кодировку в этом шрифте и тогда сможете экспортировать.

.
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

vitaly_l писал(а):т.к. символ рубля, присутствует только в одном шрифте в мире

В любом юникодном шрифте есть символ рубля изначально. ₽

А тут проблема в кодировке строки форматирования передаваемой из делфи/лазаруса.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wadman писал(а):В любом юникодном шрифте есть символ рубля изначально. ₽
А тут проблема в кодировке строки форматирования передаваемой из делфи/лазаруса.

Этот сайт возвращает UTF-8, и Лазарус работает с UTF-8 по умолчанию. Соответственно, сбой либо "до" либо "после". Нужно смотреть в самих документах. Они в какой кодировке на входе и на выходе? Какие шрифты там заявлены на входе и на выходе?
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

vitaly_l писал(а):
wadman писал(а):В любом юникодном шрифте есть символ рубля изначально. ₽
А тут проблема в кодировке строки форматирования передаваемой из делфи/лазаруса.

Этот сайт возвращает UTF-8, и Лазарус работает с UTF-8 по умолчанию. Соответственно, сбой либо "до" либо "после". Нужно смотреть в самих документах. Они в какой кодировке на входе и на выходе? Какие шрифты там заявлены на входе и на выходе?

У меня встречный вопрос: вы с эксель работали? :-) Просто вопросы и предположения по типу гадания на кофейной гуще...
Проблема не в шрифтах экселя, а в формате строки, задаваемой формат колонки. Она должна быть в анси, а не в юникоде, утф и т.п.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wadman писал(а):вы с эксель работали?

нет, максимум экспортировал таблицу (как в опен офс).
wadman писал(а):Проблема не в шрифтах экселя,

не экселя, а файлов экселя, т.к. они могут хранить шрифты или использовать шрифты в которых нет символа ₽.
wadman писал(а):Она должна быть в анси, а не в юникоде, утф и т.п.

тогда вообще-то получается технически невозможно решить, т.к. в анси нет символа ₽
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

vitaly_l писал(а):тогда вообще-то получается технически невозможно решить, т.к. в анси нет символа ₽

Проблема в том, что у вас нет понимания разницы между данными и их форматированием и передачей самих данных и передачей данных о форматировании.
По факту, формат строки криво передается в юникоде, но в анси передается нормально. Хранятся они в экселе (в файле) одинаково - в юникоде.

Вкратце : страдает именно передача формата строкой, закодированной юникодом.
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

wadman писал(а):у вас нет понимания

у меня нет реального примера и кода. без них я строю предположения, равно как и все в этом топике.
wadman
постоялец
Сообщения: 122
Зарегистрирован: 18.10.2016 14:54:28
Контактная информация:

Сообщение wadman »

vitaly_l писал(а):у меня нет реального примера и кода. без них я строю предположения, равно как и все в этом топике.

На счет "всех" это преувеличение. :) ссылку на рабочий пример я выше привел.
LearnMagic
новенький
Сообщения: 66
Зарегистрирован: 10.11.2016 22:13:38

Сообщение LearnMagic »

Moneo писал(а): ... Пробовал менять доллар на ₽, но выводит в ячейку 1/2 и при входе в ячейку 1/2 исчезает ...

Открываем excel, влкючаем запись макроса, меняем формат ячейки. Смотрим строку формата и копируем себе в код. Точную строку не скажу, т.к. excel 2016 и win7 x64 rus не обладаю.
Ответить