Эксель, slk и картинки

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Эксель, slk и картинки

Сообщение edd »

Всем добрый.
Известно, что в экселе (по крайней мере xls-файлах) можно вставлять изображение (в моем случае это логотип предприятия на бирке).
Но если ту же картинку вставить в slk-файл, сохранить, и не закрывая откомпилить, то саппорт выдает предупреждение на неожиданный символ (...встретили неожиданный символ...). Ресурсник то создается без проблем при этом...и если его подцепить в репозитарии, потом вывести из галки на экран готовую slk-форму, то естественно этой картинки на форме нет. Но опять же, если не закрывать исходный файл и подать с картинкой на печать, то она печатается...
Может как-то можно обойти эту проблему? Я имею ввиду вывод на экран slk-файла с картинкой внутри. По форуму рылся, ничего не нашел...
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Дохлый номер.
Смотри в сторону xl-функций. Формирование отчета на базе шаблона.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

SLK-формат сам по себе не предусматривает хранение встроенных объектов, ибо это - расширенный вариант электронных таблиц. и только.
Как правильно сказал Морзе - для подобных вещей пробуйте прикрутить xl-функции Галактики...
Лучше даже вообще перехватить поток из формы и сформировать полностью отчет уже в нормальном xls-формате
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Сообщение Polimer »

... или использовать rtf.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Когда excellib.dll с поддержкой OO заработала оставалась проблема с slk формами. Решал ее путем формирования отчета xl*-функциями на базе темплейта из тела slk. Перед .endform делаем форме <form>.break.
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

Серег, а нафига заморачиваться с SLK в таком случае? теплейт и так можно подцепить.. в той же предв. настройке, вызываемой по Ctrl+P из формы...
форму естественно в конце формирования XLS надо брейком давить. во избежание появления белого окошка :-)
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Ну я и так пользуюсь xl-функциями для запуска макроса. Попробую формировать отчет на базе шаблона...а шаблон в формате xlt насколько я понимаю? И не совсем ясно, как перехватывать поток из формы, если картинка не передастся...или картинка уже должна стоять в "нормальном xls-формате"? Но у мну цикл по табличке, т.е. сколько раз пробегаю по нему, столько бирочек с логотипом и должно быть...
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

1. создаете новую линкформу
2. в ней наследуете ТОЛЬКО структуру прототипа
3. на соответствующих уровнях и в циклах в программных блоках перенаправляете поток через xl-ф-ии в собственную форму, созданную на основе EXCEL
4. в конце формы делаете подавление вывода стандартной формы.
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Maverick
То 5.82 была, и по тем же prbdoc-ам однотипных отчетов штук 40 было. На один пару часов тратилось, а остальные за 5 минут почковались. :)

edd
а шаблон в формате xlt насколько я понимаю
Можно и xls, но в случае xlt не нужно лишнего кода для отслеживания наличия файла, подавления ненужных мессаг и т.д. Вообщем наш выбор - xlt. :)
или картинка уже должна стоять в "нормальном xls-формате"
Предполагается, что она уже в шаблоне.
Если их количество динамическое, то видимо придется:
1. с макросами заморачиваться
2. попробовать последовательность: xlCopyToBuff(....); xlPasteAllFromBuff(...);
3. Сделать все в rtf. :)
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

3. Сделать все в rtf.
С него всё началось. Потом пришло письмецо с требованиями к бирке, в том числе и к штрих-коду. С примером. И в этом примере данные, попадающие в штрих-код, сначала посимвольно обрабатываются, потом считается контрольная сумма... и всё это дело есс-но в макросе забито. В экселе. В rtf макросом не воспользоваться, только ежели vip-обработку нарисовать... Но мне показалось сомнительным делом исправлять и переписывать всю эту "красоту" (вложенность if чего стОит :grin: :( ) на vip. Надоело, знаете ли, за кодерами-грамотеями переделывать... Работает? Ну и славненько. Мож я не прав, может по другому ну никак.... Лицо пошире, слегка подкорректированный макрос вгоняется в slk. Сначала для проверочки коротенький...И тут такое дело - банальный логотип. Нет, ежели кто с штрих-кодом в кодировке Code 128 работал - киньте пример обработки! Я его в rtf сделаю! А иначе только эксель...
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

А в чем заключается обработка кода? Насколько я помню там только шрифт специальный требуется...
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Я тоже так думал. Но видимо заказчики формы думают по другому.
Исходные данные: 21010100102500_2500
На это дело навешан макрос, в результате выполнения брюки превращаются в элегантную строчку:
C1641649805849444<115503204=023506164380@
И уже потом спецшрифт. Возможно это перевод в язык сканера, я в свое время из акцесса делал перевод данных, подающихся на печать, в язык принтера Zebra, иначе он не понимал... Возможно тут такая же песня, поэтому подозрительным мне не показалось
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

А макрос сложный?
ЗаVIPовать его проблематично? :)

Кроме того, макрос можно сразу поселить в xlt и запускать его на нужной ячейке. xlRunMacro();
edd
Постоянный обитатель
Сообщения: 170
Зарегистрирован: 29 мар 2005, 17:49

Сообщение edd »

Да не особо сложный, просто так неинтересно. Не в смысле "я больше люблю геморрой", просто не хочется переписывать всю эту вложенность IF-ов на VIP, а переправлять макрос на более изящный...рука уже не подымается. Вот и хотел, раз это дело работает как надо, забить как есть в slk (ну или в xlt, раз уж к этому дело идет) и жить спокойно.
и запускать его на нужной ячейке
В смысле? Встать программно на ячейку, а там макрос сработает? Ну вообще идея...но можно и в конце цикла запускать через тот же xlRunMacro()... А как быть опять же с картинкой? Копировать каждый раз в буфер? Почему бы тогда не копировать в буфер-вставлять при формировании slk?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

не хочется переписывать всю эту вложенность IF-ов на VIP
помимо If-ов есть еще и Case. Медленнее, но часто читабельность кода улучшает.
В смысле? Встать программно на ячейку, а там макрос сработает? Ну вообще идея...но можно и в конце цикла запускать через тот же xlRunMacro()... А как быть опять же с картинкой? Копировать каждый раз в буфер? Почему бы тогда не копировать в буфер-вставлять при формировании slk?
Я к макросам вообще устойчивую неприязнь испытываю и всегда пытаюсь обойтись без них. :)
В данном случае в качестве параметра макросу передаем ячейку. Макрос обрабатывает математику по значению в ячейке и кладет в нее же нужное значение. Или исходное передаем макросу в качестве второго параметра.
А в отношении slk... Формат уже мертвый. Не удивлюсь, если в Атлантисе скажем так 3x его сломают случайно и заявят что починить нельзя, т.к. все кто что либо в нем понимал уже уволились.

ЗЫ Я бы не поленился и переVIPовал макрос. В результате получился бы однородный отчет на xl-шаблоне или rtf. В Rtf решается проблема с неизвестным количеством итераций по выводу картинки.
Ответить