Страницы: Пред. 1 2
RSS
Как уменьшить размер excel файла, если картинки в нём уменьшены?
 
Воспользовавшись тем, что расширение xlsx, залез внутрь. В соответствующей папке нашел среди прочих рисунков 7 файлов tiff с общим весом 39,446.    
Далее понятно, что: пересохранил их в png (с помощью Paint), подправил соответствующую xml-ку.  
Файл похудел до ~ 10 мб. После этого ф-я сжатия отработала корректно. Получился файл размером около 1,5 мб.  
 
Вы можете проделать подобное самостоятельно или дать почту, вышлю результат.
 
Я сейчас припоминаю, что вроде бы самые последние файлы скинули не с каталога. Даже не подумал, что они другого формата и что так много занимают.  
Сейчас посмотрю. Спасибо, что помогли разобраться.  
Получается, что корректно в excel обрабатываются картинки формата jpeg?  
 
Подскажите, пожалуйста, по пунктам, каким образом Вы сразу выявили какие из рисунком другого формата? В самом excel в свойствах не увидел формата, а каждый рисунок пересохранять, чтобы увидеть его формат - долго.
 
Да, действительно - они ближе к концу вашей таблицы.  
Я бы еще предложил пересохранить левую верхнюю картинку - логотип бианка, как я понимаю. Расширение emf, вес около 0,5 мб.  
 
Остальные рисунки я перечислю по коду, так Вам будет проще:  
BSD-0301 (тут одна картинка на 2 продукта)  
BSD-0402 (тут одна картинка на 2 продукта)  
 
BMT-0301 (тут тоже)  
BMT-0401 (тут тоже)  
 
BTS-0004  
 
BTS-0005  
 
BES-0000  
 
BYD-0001  
 
BYP-0002  
 
 
Их Вам надо пересохранить в другой формат с помощью какого-либо графического редактора. Думаю, .png подойдет (остальные рисунки у Вас - png)  
 
Как я залез в файл. xlsx - это, по сути, контейнер. Дописываете в конце названия (после .xlsx) ".zip" и можете смотреть внутренности.
 
subtlety у меня ещё есть 2 вопроса:  
1. как Вы думаете, excel не смог ужать фото из-за разных форматов файлов в документе или же он просто не справляется с tiff?  
2. Вы считаете формат png более подходящим, по сравнению с jpg, для создания такого рода документов (соотношение размер/качество (или ещё что))?
 
1. Очевидно, алгоритм сжатия не справляется с tiff (скорее всего просто не обрабатывает эти файлы)  
2. Я в графике не очень силен. Думаю, да. Остальные рисунки у Вас именно .png. Почему бы не привести все к единому знаменателю. О свойствах форматов можете почитать на википедии. .png поддерживает прозрачность.
 
subtlety тут вот ещё что я заметил. Часть картинок с каталога вырезалась в самом excel. Примером могут послужить колонны. Обратите внимание, в каталоге они по отдельности, однако если перевести в формат zip, как Вы говорите, и посмотреть на изображения, то можно увидеть, как эти колонны отображаются в первоначальном виде - несколько штук на одном листе (лист каталога), причём за каждой колонной закреплён один и тот же лист. Что тогда можно сделать с этой бедой? В excel, получается, хранятся целые листы, которые занимают много места. И удаление следов обрезки, которое есть в "сжатии" - не работает, получается.
 
Да, я тоже заметил эти странные jpeg-и.  
Думаю, можете ограничиться только переделкой рисунков tiff, которые я указал выше.  
Этого будет достаточно для существенного снижения веса
 
По поводу листов с колоннами - ошибся. После применения сжатия и удаления обрезки в файле хранятся только колонны, а не целые листы каталогов.
 
Ну и отлично!  
Вас можно поздравить? (=
 
Да, теперь наши клиенты будут получать прайс гораздо быстрее. Сейчас хочу ещё сильнее его ужать, путём конвертации всех png в jpg.
 
{quote}{login=subtlety}{date=10.04.2012 10:57}{thema=}{post}  
Далее понятно, что: пересохранил их в png (с помощью Paint), подправил соответствующую xml-ку.  
 
Вы можете проделать подобное самостоятельно или дать почту, вышлю результат.{/post}{/quote}  
subtlety, я хочу отдельно отредактировать папку "media" - поменять в ней все изображения на другой формат с сохранением их имени. Пробую подменить эту папку, на папку содержащуюся в архиве, меняю формат на xlsx, но теперь изображения не отображаются. Вы писали, что пересохранили картинки и поправили xml-ку. Можете рассказать поподробнее, каким образом у Вас получилось это сделать? А то заново открывать прайс и вручную удалять файлы старого формата и подставлять новые - очень долго.
 
Написал макрос по-быстрому. В процессе понял, что ценность его невелика, быстрее залезть самому, руками. Поэтому доделывал спустя рукава - нет обработки ошибок, удаления временных файлов и т.п.  
Макрос выводит на новый лист список названий рисунков с расширениями, отличными от png, jpg. Работает только в 2007, 2010 и скорее всего только для файлов xlsx.  
Может, кому пригодится, как заготовка:  
 
 
Sub test()  
   Dim str As String  
   Dim i As Integer  
     
   str = ActiveWorkbook.Path & Application.PathSeparator  
     
   ActiveWorkbook.SaveCopyAs Filename:=str & "tempbook.xlsx.zip"  
   MkDir str & "tempbook"  
   ActiveWorkbook.Worksheets.Add  
 
   Set ShellApp = CreateObject("Shell.Application")  
   Set objDestFolder = ShellApp.Namespace(str & "tempbook" & Application.PathSeparator)    'куда распаковать  
   Set objSrcFolder = ShellApp.Namespace(str & "tempbook.xlsx.zip") 'что распаковать  
   objDestFolder.CopyHere objSrcFolder.Items    'распаковка архива  
     
   Set objSrcFolder_2 = ShellApp.Namespace(str & "tempbook" & Application.PathSeparator & "xl" & Application.PathSeparator & "media")  
     
   i = 1  
   For Each it In objSrcFolder_2.Items  
      If Right(it.Path, 3) <> "png" And Right(it.Path, 3) <> "jpg" And Right(it.Path, 4) <> "jpeg" Then  
      ActiveSheet.Cells(i, 1).Value = it.Name  
      i = i + 1  
      End If  
   Next  
     
End Sub
 
"а потом вставлять в excel - очень муторно и долго."  
"а каждый рисунок пересохранять, чтобы увидеть его формат - долго."  
"вручную удалять файлы старого формата и подставлять новые - очень долго."  
 
Честно говоря, абсолютно не впечатляет. Что ж Вы так работы боитесь? Я на Ваш проект потратил уже суммарно несколько часов (в том числе и на тупую ручную работу) и не ною.    
Очень долго - вставить семь рисунков?  
Разбираться с xml будете дольше скорее всего.    
В папке "xl\drawings\_rels\" лежит файл "drawing1.xml.rels" Откройте его текстовым редактром (например, блокнот). Ищите по тесту "image115.tif" и аналогичные с расширеним ".tif" меняете на то, которое установили на самом деле.
 
Нет, subtlety, я работы не боюсь. Может я неправильно выразился, я имел в виду, что может есть способ, при помощи которого это можно сделать быстрее. Если бы дело было бы только в отношении этих 7 файлов, то тут ничего такого нет, чтобы поменять руками. У нас просто ещё есть несколько прайсов, в которых этих картинок гораздо больше в несколько раз.  
Спасибо, что потратили на решение моей проблемы столько времени!
 
"в которых этих картинок гораздо больше в несколько раз."  
Да, это неприятно. Вы уже проверяли прайсы на наличие tif-ов?
 
Да, проверил. Жду, когда приду домой, чтобы воспользоваться взломанным конвертером, который переформатирует большое количество изображений в другой формат гораздо быстрее, чем я сделаю это через paint (не из-за лени, а чтобы было больше свободного времени на другую работу :) ). У нас есть ещё несколько прайсов. Я озадачился переформатировать и png в jpg, поскольку в jpg файл excel занимает меньше места.  
Для проверки переименовал xlsx в zip, конвертировал несколько файлов из tiff в jpg, запихнул обратно в архив, сделал корректировку в файле drawing1.xml.rels, как Вы подсказали, и изображения в прайсе автоматически поменялись. И нет необходимости отформатированные файлы заново центровать в ячейках, обрезать. Они стали ровно так, как стояли до этого файлы в других форматах, таким же обрезанием по краям. Очень удобно, быстро и легко.  
Спасибо!
 
Все решается проще.  
 
Просто сохраняете файл в формате xls. (видимо в старом формате нет поддержки tif)  
Файл худеет до 10 мб.  
Запускаете ф-ю "сжать рисунки".  
Файл ужимается до 1,5 мб.  
Пересохраняете обратно в xlsx (если это необходимо).    
Размер остается примерно такой же.  
 
Если прайсов очень много, пишете простенькую процедурку и все
Страницы: Пред. 1 2
Наверх