PDA

Показать полную графическую версию : [решено] Размер и содержимое xls-файла


ShaddyR
31-01-2012, 01:29
Во вложении - "шахматка" от бухгалтера одного из подшефных предприятий. Без данных - удалены. Т.е. теоретически - пустая. Вопрос на засыпку: почему файл занимает почти 10Мб и тормозит при открытии на довольно мощных (как для задачи "открыть файл xls") компьютерах? И таких файлов у бухгалтера - штук несколько, некоторые занимают по 30Мб - ну, привыкла она так чего-то там вести. Причем до недавнего времени проблем не наблюдалось - ни долгого открытия, ни торможения при скролинге етс.

Что пробовал: разделять файл на части (типа по пол-года, по-квартально етс.) - долго, нудно и безрезультативно. Проверено: если из вложения скопировать ВСЕ, но вставлять как (последовательно) формат, столбцы, значения - визуально все выглядит аналогично исходнику, но сохраненный файл весит пару десятков килобайт (порядка 35Кб, после прописывания всех формул по аналогии с исходником).
2010-й Excel после пересохранения дал объем в 800Кб - типа что-то оптимизировал. Но сохранение обратно из xlsx в xls возвращает все на круги своя.

Какие мысли\идеи будут?

ferget
31-01-2012, 02:53
2010-й Excel после пересохранения дал объем в 800Кб - типа что-то оптимизировал. »

не оптимизировал, а сжал, xlsx - это zip архив

если архив открыть, то внутри есть файл drawing1 весом 75 MB

okshef
31-01-2012, 08:38
ShaddyR, забирай чистый

ShaddyR
31-01-2012, 12:57
Это гуд, конечно. А можно методику\алгоритм очищения озвучить - ну, там, святой водой на кого-нить побрызгать, файл крестным знамением отшлёпать или еще чего? А то у меня, как я говорил, много таких файлов могет быть)

okshef
31-01-2012, 23:48
если архив открыть, то внутри есть файл drawing1 весом 75 MB »
открываем, сохраняем как файл Excel 2010 (расширение *.xlsx), открываем любым архиватором, удаляем из архива папку drawing1, сохраняем изменения в архиве.
Открываем файл, игнорируем ругань Excel-я, соглашаемся с его попыткой восстановить файл. После открытия файла сохраняем его "как" в формате Excel 2003. Наслаждаемся при следующем открытии.

ShaddyR
01-02-2012, 00:15
офигеть... а это из какого mskb ? :o :lamer:
На досуге проверю рецепт)

okshef
01-02-2012, 00:29
Общие сведения о новых расширениях имен файлов и XML-форматах Office - Excel - Office.com (http://office.microsoft.com/ru-ru/excel-help/HA010006935.aspx)
Сжатие файлов Файлы сжимаются автоматически, и в некоторых случаях их размер может сокращаться на 75 процентов. В XML-форматах Office для хранения документов используется стандарт сжатия ZIP

ShaddyR
01-02-2012, 00:52
okshef, я не против. Мне просто интересно стало происхождение графического объекта в файле, где ему быть не полагалось. Причем в разных файлах и с определенного времени. А средствами собсно офиса 2003 подобное решается?

okshef
01-02-2012, 02:25
ShaddyR, я когда первоисточник исследовал, никак не мог найти даже намека на графический объект. Но сейчас, детально поколупавшись, нашел на листе с таблицей более 52000 (!!!) текстовых полей.
Лови макрос для удаления всех графических объектов книги
Sub shapes_del()
Dim shp As Shape
For i = 1 To Worksheets.Count
j = 0
For Each shp In Sheets(i).Shapes
shp.Delete
j = j + 1
Next shp
MsgBox "На листе " & i & " удалено " & j & " графических объектов"
Next
MsgBox "Done !"
End Sub

Причина - испорченный шаблон

p.s. Не пугайся - работать будет долго. На моем i7 около 5 минут

ShaddyR
01-02-2012, 19:07
работать будет долго. На моем i7 около 5 минут »
Долго - это не то слово. Второй вариант проще и эффективней по затратам времени: открываем, сохраняем как файл Excel 2010 (расширение *.xlsx), открываем любым архиватором, удаляем из архива папку drawing1, сохраняем изменения в архиве.
Открываем файл, игнорируем ругань Excel-я, соглашаемся с его попыткой восстановить файл. После открытия файла сохраняем его "как" в формате Excel 2003. Наслаждаемся при следующем открытии. »

okshef
01-02-2012, 21:54
ShaddyR, это что? Ты сломаешь мозг, когда захочешь понять, откуда у этой заразы ноги растут? Разберешься - отпишись, будь ласка.

okshef
17-09-2013, 00:38
ShaddyR, вот и "ноги" 2010 - Excel после вставки зависает (http://forum.oszone.net/post-2218954.html#post2218954)
В представленном ТС файле (даже считать не стал, сколько) - фигуры. Сравнил с исходным (файл взят из Консультант+ - см. Приложение 10 (http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=103495;div=LAW;mb=LAW;opt=1;ts=2DF3C72D65EB4085E0E72469AF5FE5B1;rnd=0. 1651891047954498;7=|1007204;div=LAW;mb=LAW;SearchAnotherDiv=1;SEM=-;TS=3D1857ABF94F59A041C91D2C92F0E7FF;BASENODE=1280210795-3885795899;)). В нем только 1 формочка, совсем невидная, если специально не смотреть. В процессе копирования из 1 формочки получается 2, из 2 - 4, ну, а дальше ... ты понимаешь. На 15 копировании файл вешает Excel и все кричат "Караул".

ShaddyR
17-09-2013, 02:55
okshef, формочки формочками... но откуда там нафиг при этом графические объекты берутся? Опять уважаемая программа старается думать за нас, что именно мы имели в виду? А спросить? ;)

okshef
17-09-2013, 08:33
Это не программа, это разработчики этих формочек... Excel сам добавить на лист ничего не может.




© OSzone.net 2001-2012