Страница 1 из 4

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

Добавлено: 15 мар 2010, 14:40
edd
Всем добрый.
Известно, что в экселе (по крайней мере xls-файлах) можно вставлять изображение (в моем случае это логотип предприятия на бирке).
Но если ту же картинку вставить в slk-файл, сохранить, и не закрывая откомпилить, то саппорт выдает предупреждение на неожиданный символ (...встретили неожиданный символ...). Ресурсник то создается без проблем при этом...и если его подцепить в репозитарии, потом вывести из галки на экран готовую slk-форму, то естественно этой картинки на форме нет. Но опять же, если не закрывать исходный файл и подать с картинкой на печать, то она печатается...
Может как-то можно обойти эту проблему? Я имею ввиду вывод на экран slk-файла с картинкой внутри. По форуму рылся, ничего не нашел...

Добавлено: 15 мар 2010, 15:11
m0p3e
Дохлый номер.
Смотри в сторону xl-функций. Формирование отчета на базе шаблона.

Добавлено: 15 мар 2010, 15:35
Maverick
SLK-формат сам по себе не предусматривает хранение встроенных объектов, ибо это - расширенный вариант электронных таблиц. и только.
Как правильно сказал Морзе - для подобных вещей пробуйте прикрутить xl-функции Галактики...
Лучше даже вообще перехватить поток из формы и сформировать полностью отчет уже в нормальном xls-формате

Добавлено: 15 мар 2010, 15:44
Polimer
... или использовать rtf.

Добавлено: 15 мар 2010, 15:51
m0p3e
Когда excellib.dll с поддержкой OO заработала оставалась проблема с slk формами. Решал ее путем формирования отчета xl*-функциями на базе темплейта из тела slk. Перед .endform делаем форме <form>.break.

Добавлено: 15 мар 2010, 15:54
Maverick
Серег, а нафига заморачиваться с SLK в таком случае? теплейт и так можно подцепить.. в той же предв. настройке, вызываемой по Ctrl+P из формы...
форму естественно в конце формирования XLS надо брейком давить. во избежание появления белого окошка :-)

Добавлено: 15 мар 2010, 15:58
edd
Ну я и так пользуюсь xl-функциями для запуска макроса. Попробую формировать отчет на базе шаблона...а шаблон в формате xlt насколько я понимаю? И не совсем ясно, как перехватывать поток из формы, если картинка не передастся...или картинка уже должна стоять в "нормальном xls-формате"? Но у мну цикл по табличке, т.е. сколько раз пробегаю по нему, столько бирочек с логотипом и должно быть...

Добавлено: 15 мар 2010, 16:15
Maverick
1. создаете новую линкформу
2. в ней наследуете ТОЛЬКО структуру прототипа
3. на соответствующих уровнях и в циклах в программных блоках перенаправляете поток через xl-ф-ии в собственную форму, созданную на основе EXCEL
4. в конце формы делаете подавление вывода стандартной формы.

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

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

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

Добавлено: 15 мар 2010, 16:47
m0p3e
А в чем заключается обработка кода? Насколько я помню там только шрифт специальный требуется...

Добавлено: 15 мар 2010, 16:56
edd
Я тоже так думал. Но видимо заказчики формы думают по другому.
Исходные данные: 21010100102500_2500
На это дело навешан макрос, в результате выполнения брюки превращаются в элегантную строчку:
C1641649805849444<115503204=023506164380@
И уже потом спецшрифт. Возможно это перевод в язык сканера, я в свое время из акцесса делал перевод данных, подающихся на печать, в язык принтера Zebra, иначе он не понимал... Возможно тут такая же песня, поэтому подозрительным мне не показалось

Добавлено: 15 мар 2010, 17:09
m0p3e
А макрос сложный?
ЗаVIPовать его проблематично? :)

Кроме того, макрос можно сразу поселить в xlt и запускать его на нужной ячейке. xlRunMacro();

Добавлено: 15 мар 2010, 17:22
edd
Да не особо сложный, просто так неинтересно. Не в смысле "я больше люблю геморрой", просто не хочется переписывать всю эту вложенность IF-ов на VIP, а переправлять макрос на более изящный...рука уже не подымается. Вот и хотел, раз это дело работает как надо, забить как есть в slk (ну или в xlt, раз уж к этому дело идет) и жить спокойно.
и запускать его на нужной ячейке
В смысле? Встать программно на ячейку, а там макрос сработает? Ну вообще идея...но можно и в конце цикла запускать через тот же xlRunMacro()... А как быть опять же с картинкой? Копировать каждый раз в буфер? Почему бы тогда не копировать в буфер-вставлять при формировании slk?

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

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