|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
Доброго времени суток! Сразу мой же вопрос на stackoverflows , пока там все молчат. Краткая суть вопроса : Имеется файлик colors.doc (прикреплен) из него копируется например картинка "Var 5" (там всего 10 картинок, каждая имеет расширение .png размера 325х125 и в масштабе 44%) и вставляется в *.xls так, чтобы сохранились цвета картинки и размеры , масштаб картинки после этого надо установить 100%. Я пишу прогу, которая через Ole сначала копирует в буфер обмена картинку из ворда и забирает ее в EnhMetaFile (HENHMETAFILE). Потом тоже самое происходит с картинкой, которая в excel'e. Картинка, полученная из ворда "чистая", т.е. в ней нет сглаживания и она нужных размеров, картинка же которая получена из excel'я получается "грязная", т.е. она сглаженная и другого размера. Конечно я пробовал различные методы вставки в Excel(специальные, png, метафайлы и прочее).. Думаю, что в данном случае практически не важно на чем я пишу, потому что вопрос больше связан с Excel'em. Пишу я на C++, WINAPI используя Ole Automation (IDispatch). Скриншот сие чуда: Слева картинка чистая, справа грязная. Теперь более конкретно .. Чтобы скопировать картинку из ворда делаю запрос вида: Код: vbnet 1. 2.
В екселе нет аналогичного метода, вместо этого есть метод CopyPicture подробнее о ней : Код: vbnet 1.
Код проги отвечающий за отображение картинки и копирование ее из буфера: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Личные наблюдения Если colors.doc сохранить, как .html, то в папке появятся "чистые" картинки. Если же *.xls сохранить, как .html, то в папке будут лежать "грязные" картинки другого размера, причем это не зависит от способа вставки в Excel! Если скопировать (Ctrl+C) из Excel картинку и вставить(Ctrl+V) например в Paint.NET, то внутри него будет чистая картинка! отсюда мне кажется, что я неверно копирую картинку в буфер, т.е. надо какой-то другой запрос посылать в Excel. Рад любым идеям и предложениям! Спасибо за помощь! __________________ Подпись © Mr.Pisarik ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 00:19 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 00:21 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
складывается впечатление, что либо я не понятно описываю задачу, либо не туда пишу, либо раз никто не отвечает, то это "гробовая" задача-_- Осталось только на форуме msdn'а написать, давно еще когда-то был зареган там, а сейчас вхожу, а мне говорят, что надо подтвердить что это моя почта и давайте мы вам вышлем письмо, а вы по ссылке перейдете.. высылают уже 2-ой день-_- а сроки то жмут) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 21:57 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
Офис какой версии? Просто в версиях выше 2003-го точно есть (в параметрах-дополнительно) опция, позволяющая не сжимать графику на листах. Значит, эти версии дефолтно графические файлы пережимают - вот и потери... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 22:13 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
pisarik, не пробовали параметр другой выставить? Shapes.Item(1).CopyPicture xlBitmap , xlPicture А если честно - у меня в выложенном Вами файле Word-а картинки уже размытые(не такие четкие, как на картинке слева в Вашем посте). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 22:18 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
AndreTM, о, благодарю за ответ) версия самого Excel 2007, а файл сохранен с совместимостью .xls, возможности перейти на .xlsx нет. погуглил, залез сейчас в настройки: параметры -> дополнительные -> печать -> высококачественная графика - поставил галку еще залез в параметры рисунка: формат -> сжатие рисунка -> галки на применить сжатие на выделенных нету -> параметры -> отключил автоматически выполнять базовое сжатие при сохранении но пока что без изменений, может мне надо теперь перезалить картинки в excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 22:26 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
The_Prist, ого, это довольно странно, попробуйте сохранить в .htm, там должны быть чистые картинки. получить hBitmap конечно было бы не плохо, но я не знаю как мне тогда из Ворда получить bitmap, потому что там вообще нет никаких параметров у метода, а это значит, что потом как-то придется переводить то ли битмап в формат метафайла, то ли наоборот, этот вопрос уже гуглил, правда не очень основательно, нашел там что-то стороннее.. в общем этого хотелось бы избежать) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 22:30 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
AndreTM, А вообще с этим делом у меня немного странно в том плане, что еще стоит Microsoft Office Starter 2010, он как бы изначально стоял, после уже установил Microsoft Office 2007 поверх, теперь вот они оба, поставил на всякий случай в обоих настройки не сжимать:) в 2010 было так: параметры -> дополнительно -> размер и качество изображения -> не сжимать вообще это кажется свойство не для всего excel, а исключительно каждой книги ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 22:41 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
Вообще говоря есть у нас в универе предмет такой дебильный "Избранные главы информатики", сам на программиста учусь.. думал будет что-то интересное, а там лаб 8, каждая представляет из себя пдф на 20 страниц с указаниями, что делать, и не дай бог какой-то подпункт не правильно сделаешь.. и там не написано как это делать.. а темы связаны как раз со всякими word, excel, всякие редакторы музыки, видео, графические corl photo-paint, photo philtre и т.д. сплошная по*бота, ну и есть там такая фича, что можно написать проверку лабы, тогда можно не делать никакие лабы, лично нам препод сказала что ей нужна прога, которая проверяла бы лабу с excel'ем, вот в этой лабе как раз и присутствовал этот colors.doc и еще один ворд.. но все остальное уже не важно.. так сейчас если до среды не сделаем еще с 2-мя ребятами эту прогу, то придется выполнять все эти лабы в поте лица, контрольную еще как-то писать, короче ожидают нас одни приключения)) а еще коллоквиум по матану впереди, одно веселье) в проге уже кстати 5к строк:D ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 22:53 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
AndreTM, и еще меня смущает то, что Если скопировать (Ctrl+C) из Excel картинку и вставить(Ctrl+V) например в Paint.NET, то внутри него будет чистая картинка ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 23:41 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
после копирования картинки в буфер обмена, выполнил Application.ClipboardFormats(1), получил, что формат в котором в буфере обмена 2, т.е. xlClipboardFormatPICT 2 Picture спасибо, классная документация-_- ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 23:48 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
еще что недавно заметил.. в общем покопался немного в гугле, нашел обучающий пост как копировать информацию из Excel в PowerPoint. Там сказано, что копируем картинку просто Ctrl+C, а потом, когда будем вставлять в PowerPoint, то там появляются опции вставки и там можно выбрать origina format и прочее.. Это наводит на мысль о том, что Excel сохраняет сразу в нескольких форматах. Я еще до конца не разобрался с метафайлами, но в headere картинки из Word указано, что data содержит 6 записей (nRecords), а из Excel - 13, возможно надо выбрать как-то правильно записи) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 00:07 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
разобрался с записями в метафайлах, сумел получить к ним доступ, по идее оттуда можно выпилить bitmap, точнее он там и есть, правда трудновато будет. ну не может же быть все так сложно-_- такое чувство, что где-то жутко туплю ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 00:36 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
а почему не через диск - из ворда сохранить на диск - с диска вставить в эксель? Так нельзя? на диске проверить чистоту. Еще может перед копированием из ворда поставить масштаб - 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 10:31 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
Vladimir Baskakov, поясню еще раз ситуацию) есть лаба, в которой надо из данного ворда вставить картинку в excel как сказано выше. Есть 300 студентов, соответственно 300 лаб и 1 препод. Мы пишем для препода прогу, которая будет проверять данные лабы. Препод хочет, чтобы он в какую-нибудь папку ложил colors.doc и все лабы с .xls. Наша конечная задача сверить картинки (конечно там лаба не только из этого состоит, но не суть). Поэтому вариант сохранить на диск, а потом с диска в ексель - это прерогатива каждого отдельно студента, я не знаю, как он вставляет эту картинку в Ексель) Но могу отметить, что если в ворде сначала картинку сделать в масштабе 100%, потом скопировать и вставить в .xls как png, то тогда наконец-то приходит чистая картинка из екселя!) Но я думаю вряд ли так кто-то сделал.. Как сравнивать картинки, когда они разных размеров, да еще и сжаты что ли (цвета потеряны) понятия не имею, поэтому стараюсь, чтобы из Excel пришла чистая картинка. Тем более, что одна и та же картинка приходит ко мне в прогу грязная, а в mspaint, например, чистая (делаю ctrl+c в excel и ctrl+v в mspaint)!!! Я пробовал записать макрос этих действий, но то ли у меня руки кривые, то ли макрос как-то плохо записывается.. мои действия: нажимаю на какую-нибудь ячейку, потом выбираю картинку, потом копирую. в макрос же записывается только Range("A3").Select Selection.Copy т.е. то, каким образом он селектировал картинку в макросе не написано, но это думаю не так и важно, это делать я и так умею.. пробовал у себя в проге выполнять вместо CopyPicture - Copy все одно и тоже, одна грязь-_- ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 14:59 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
если в ворде сначала картинку сделать в масштабе 100%, потом скопировать и вставить в .xls как png, то картинка приходит чистая, но увы разных размеров)) есть совсем левое решение: это запиливать картинку из Word'a в Exсel в проге, и потом опять доставать из екселя)) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 15:35 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
Не понятно. ActiveSheet.Shapes("Picture 2").Copy в Excele Selection.Paste в Worde Selection.ShapeRange.ScaleWidth 1, True Selection.ShapeRange.ScaleHeight 1, True не даёт норм картинку? Можно ещё сбросить настройки картинки в Worde (контраст, яркость, ....) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 08:37 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
Аа, наоборот. Ну так, тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 08:48 |
|
Нетривиальная проблема с екселем! 2 дня уже сижу, хелп!
|
|||
---|---|---|---|
#18+
_Дмит_, Эх, что ж я так плохо объясняю)) картинку надо скопировать из ворда в ексель не с помощью программирования, а используя майкрософт офис)) а вот потом уже надо сравнить картинки которые в екселе и ворде с помощью программирования и так получается, что когда я в ворде копирую в буфер обмена картинку и забираю ее в проге, то она хорошая, т.е. Цвета сохранены, размер картинки 325х125, все как надо, когда же я достаю картинку из екселя, то она достается грязная, размеры у нее какие-то 407х156 если память не изменяет, а цвета сглажены.. Такие картинки янемогу сравнить! Поэтому мне надо из екселя достать чистую картинку, но спасибо за ответ: ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 11:45 |
|
|
start [/forum/topic.php?fid=61&msg=38468718&tid=2174400]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 355ms |
total: | 506ms |
0 / 0 |