Имя: Пароль:
1C
 
Код Excel для сжатия картинок
0 Ненавижу 1С
 
гуру
24.06.11
10:57
Из 1С формируется и сохраняется в Excel отчет с картинками, размер адский получается - 170 метров.
Заходим в Excel (говорю про 2003), выбираем картинку и жмем "формат рисунка", закладка "рисунок", жмем "Сжать...", выбираем "ко всем рисункам документа", все подтверждаем и размер файла после сохранения падает до 12 метров.
Вопрос, а как это сделать программно? Тот макрос, который генерируется записью макросов ничего подобного сам не делает:


   ActiveSheet.Shapes("Picture 1").Select
   Selection.ShapeRange.PictureFormat.Brightness = 0.5
   Selection.ShapeRange.PictureFormat.Contrast = 0.5
   Selection.ShapeRange.PictureFormat.ColorType = msoPictureAutomatic
   Selection.ShapeRange.PictureFormat.CropLeft = 0#
   Selection.ShapeRange.PictureFormat.CropRight = 0#
   Selection.ShapeRange.PictureFormat.CropTop = 0#
   Selection.ShapeRange.PictureFormat.CropBottom = 0#

То есть если такой макрос запустить еще раз на не сжатых рисунках и сохранить, файл не сжимается.
Также прошу высказывать альтернативные решения.
1 Ненавижу 1С
 
гуру
24.06.11
11:23
вот что пишут:

Импортировать и подогнать размер фотографии можно (см.пример), но вот что касается сжатия, то хоть эта возможность и появилась в Excel XP, но программно она недоступна (если не считать не очень надёжного способа c использованием SendKeys)

http://www.progz.ru/t40251/
2 Tatitutu
 
24.06.11
11:30
(0)http://www.magazka.com/v-60-raz-szhimaem-fayl-excel.html
В 60 раз сжимаем файл EXCEL

В 60 !!! раз сжимаем файл MS EXCEL с картинками
(созданный программно из 1С)
Все мы когда то сталкивались с экспортом картинок в файл MS EXCEL
(или семейство MS принцип один и тот же)
Что интересно?
, покажу на примере если создать новый лист MS EXCEL и вставить
в него картинку (*.jpg) размером 1,06 мб и сохранить
книга столько примерно и будет весить.
(это касается последних версий MS EXCEL)
Но если программно в таблицу 1С вставить туже картинку
и сохранить в формате *.xls
То новоиспеченное чудо будет весить `24,2 мб. !!! Красиво да.
А если не одна картинка ?
Давайте разберемся почему так происходит.
1. 1С сохраняет (экспортирует свою мxl таблицу по умолчанию)
в MS EXCEL в формате 05 MS EXCEL)
- хорошо руками открываем файл и сохраняем в нужном нам формате.
Смотрим размер файла - 5,6 мб. уже хорошо, но еще нето.
2. В свойствах рисунка есть замечательная функция сжать....
выбираем ее и выбираем "Изменить разрешение для экрана и Интернета"
всего 96 точек на дюйм вместо 200 )))
Сохраняем файл и что мы видим файл весит 0,8 мб....да это прорыв.
Но это каждый раз ручками, лень....
Данная обработка не претендует на оригинальность,
ОНА ПРОСТО показывает на примере как программно можно добиться успеха в 60 раз ! файл в итоги будет весить 0,4 мб
(не без помощи языка VBA)
3 Ненавижу 1С
 
гуру
24.06.11
11:34
(2) все таки через sendKey
4 Tatitutu
 
24.06.11
11:46
(3) да.
Но есть еще один интересный вариант (сидел в голове)
примерно
-сохраням файл сначала в xls
-потом же этот файл сохранить в html
(в папке появится папка со всеми картинками из документа)
-написать скрипт для отрытия например Microsoft Office Picture Manager и им сжать всю "толпу" из папки он делает это махом
-открываем файл в html и сохраняем уже в xls
все быстро и просто.И самое интересное будет работать ))
5 Ёпрст
 
гуру
24.06.11
11:49
самое прикольное, это как пдф жмётся самим акробатом, достаточно сохранить пдф в более "младшую" версию.. жмётся иногда до 10 раз.
6 smaharbA
 
24.06.11
12:35
так пойдет ?

Шейпы = Лист.Shapes;
Шейп = Шейпы.Item(1);
Ячейка = Шейп.TopLeftCell;
Ячейка.Select();
Шейп.Cut();
Лист.PasteSpecial("JPEG", 0, 0);
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.