Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 Нужна фрилансерская помощь в копировании картинки из Excel  [new]
iskatelsql
Member

Откуда:
Сообщений: 785
Топик может и не уместный, но удалят если нужно.

В общем нужно скопировать таблицу экселя (и график) как картинку, что легко делается копипастом. Но нужно сделать это без использования буфера обмена. Совсем. Сразу в файл. Предлагаю 1000р за рабочий пример на любом языке кроме брайнфака :)
По времени максимум неделя.
14 мар 19, 22:46    [21833095]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
iskatelsql
Member

Откуда:
Сообщений: 785
Дополню, нужен именно родной EMF файл, принтскрины не предлагать
14 мар 19, 22:49    [21833096]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
vkle
Member

Откуда: Самара
Сообщений: 14699
Запустить в виртуалке, окно на весь экран, скриншот штатными средствами виртуализатора. Не?
14 мар 19, 23:18    [21833112]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
vkle
Member

Откуда: Самара
Сообщений: 14699
Сорь, фигню написал, следует удалить пост
14 мар 19, 23:21    [21833113]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25767
iskatelsql
По времени максимум неделя.

https://stackoverflow.com/a/702569 сказать, куда переводить? :)
15 мар 19, 08:27    [21833252]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
iskatelsql
Member

Откуда:
Сообщений: 785
wadman,

Извини, тут сообщения редактировать нельзя, поэтому я уточнил в первом ответе.
15 мар 19, 09:52    [21833328]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25767
iskatelsql,

для excel emf не родной формат, это скорее формат буфера обмена.
15 мар 19, 10:28    [21833380]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7830
Задача не понятна.
Не понятно, чем не угодил Clipboard.
Не понятно, почему WMF

Думаю, через OLE можно заставить Excel OLE Server отрисоваться в пользовательский DC (Device Context) и, соответственно, получить "красивый" WMF (который будет вектором, а не растром). Но я с OLE не настолько близко знаком и разбираться желания нет.

IMHO & AFAIK

P.S.
Беглый поиск по гуглу говорит, что экспорт графика в WMF - вообще штатная операция. Но можно ли экспортировать сразу Selection/Range, не очень понятно.
Range или весь лист как минимум можно в PDF или XPS, но вродне не в WMF

P.P.S.
Никто не мешает сохранить в XPS, потом с помощью XPS API отрендерить файл на пользовательский DC и получить WMF. Но потребуется создавать временный файл.

IMHO & AFAIK
18 мар 19, 22:38    [21836645]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
iskatelsql
Member

Откуда:
Сообщений: 785
Leonid Kudryavtsev
Задача не понятна.

А чего тут непонятного - нужен точно такой-же файл как по ctrl+c - ctrl-v -> как картинка. Потому что все это согласовано на верху, а я тут вообще субподрядчик - меня слушать не будут, хоть вручную копируй. (уже получал люлей за самодеятельность)

Leonid Kudryavtsev
Не понятно, чем не угодил Clipboard.

Да через него сейчас все и пашет, но раз в 2-3 дня программа вылетает с ошибкой "буфер обмена пуст", перезапускаешь - все ок. Иногда вылезает панель управления асускового AI Suite 2, которая живет в трее. Непонятно почему. Сыкотно как-то, паранойя усиливается. Стараюсь не моргать в процессе. И не факт что какая нибудь программа после обновления не решит как-то контролировать буфер. Сейчас же даже мелкие утилитки в операционные системы метят. Была бы возможность я бы от буфера ушел.
18 мар 19, 23:14    [21836663]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
vkle
Member

Откуда: Самара
Сообщений: 14699
iskatelsql
И не факт что какая нибудь программа после обновления не решит как-то контролировать буфер.
Вот с таким сталкивался. Какая-то запущенная программулина во время работы периодически пихала в буфер свои данные. Ну и пользователь был в полных непонятках, что за проблема с копипастом...
18 мар 19, 23:35    [21836668]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25767
Leonid Kudryavtsev
Беглый поиск по гуглу говорит, что экспорт графика в WMF - вообще штатная операция.

Штатная, которая была выпилена очень давно.
https://support.microsoft.com/en-us/help/2479871/security-settings-for-graphic-filters-for-microsoft-office-365
https://support.microsoft.com/ru-ru/help/2479871/security-settings-for-graphic-filters-for-microsoft-office-365

Те версии фильтра, что находятся либо 16-битные, либо без подписи.

Так что jpeg, gif или png.
19 мар 19, 08:51    [21836822]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19289
iskatelsql
раз в 2-3 дня программа вылетает с ошибкой "буфер обмена пуст"
Гм... а обработать ошибку, отловить "пустоту" буфера, выполнить дополнительную очистку от сбойной грязи (копированием в него любого фэйка) и повторное копирование - это не наш метод?
19 мар 19, 09:36    [21836871]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
iskatelsql
Member

Откуда:
Сообщений: 785
Akina,

Это я просто перечислил с чем встречался в процессе, к тому что буфер штука непредсказуемая.
19 мар 19, 10:38    [21836952]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 19289
Разделяемым системный ресурс... куда деваться.
19 мар 19, 10:55    [21836981]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7830
Ну тогда только остается Range.ExportAsFixedFormat (если его не выпилили и качество удовлетворяет).

Главная проблема, как я ее вижу, если Excel вдруг решит Range на страницы побить (((

Если все поместиться на одну страницу, то перегнать в WMF/EMF (Windows Meta file) думаю не проблема. XPS API методы для рендеринга предлагает, т.ч. создать DC совместимый в WMF/EMF, отрендерить туда XPS - задача для пары дней Copy/Past примеров из MSDN.

IMHO & AFAIK
19 мар 19, 14:34    [21837372]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7830
Akina
Разделяемым системный ресурс... куда деваться.

Корректно с ним работать.
Поискал в И-нет, тут же встречаются советы, просто руками открывать и закрывать clipboard
Сам так не делал

https://www.excelforum.com/excel-programming-vba-macros/400405-how-to-lock-the-clipboard.html#post1081418

MSDN OpenClipboard
Opens the clipboard for examination and prevents other applications from modifying the clipboard content.
...
A handle to the window to be associated with the open clipboard. If this parameter is NULL, the open clipboard is associated with the current task.
19 мар 19, 14:48    [21837395]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7830
Ну и теоретически нам Clipboard даром не нужно. Нужно работать через IDataObject. Но как это сделать с Excel, не очень понятно ((( Хотя, думаю, Excel должен работать через стандартные ф-ции, т.ч. должен поддерживать IDataObject. Но как преобразовать IRange в IDataObject (без clipboard) - в I-net с первого раза не находится (((
19 мар 19, 15:14    [21837427]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7830
Есть большое подозрение, что параметр у метода Copy, это банальный IDataObject который эти данные и получит. Т.ч., подозреваю, достаточно создать свой "приемник" унаследованным от IDataObject и данные можно получать и без всякого системного Clipboard'а.

Не проверял.
19 мар 19, 15:21    [21837439]     Ответить | Цитировать Сообщить модератору
 Re: Нужна фрилансерская помощь в копировании картинки из Excel  [new]
ldfanate
Member

Откуда:
Сообщений: 130
ну а как вариант - вызвать Activesheet.PrintOut и напечатать в файл?
Предварительно задать область печати ровно по границам таблицы и графика.

Если доступна установка виртуальных принтеров типа PdfComplete - то на выходе можно любого формата в принципе получить.
19 апр 19, 16:30    [21867384]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить