Почему Numbers скрывает огромный PNG-файл в экспортированных листах Excel?

73

ОК, это странно. Я беру свой пустой лист номеров:

Чистый лист импортируется из чистого CSV

... и экспортировать его в Excel:

введите описание изображения здесь

Ого, это кажется немного большим. Давайте переименуем документ Excel в .zip и заглянем внутрь:

введите описание изображения здесь

Копаем немного глубже:

введите описание изображения здесь

Ну, мы только что нашли 99% размера файла. Но что это - какое-то встроенное изображение для предварительного просмотра? Давайте откроем это:

введите описание изображения здесь

Нет, всего лишь 635x635 PNG случайного шума. У кого-нибудь есть идеи, что здесь происходит?

Нимеш Нима
источник

Ответы:

41

Я не уверен, почему это включено в экспорт, но это одна из «заливок изображения» по умолчанию: Заполнение изображения

Лукас Кляйн
источник
2
К счастью, кажется, что можно удалить это изображение, не повредив файл xlsx, используяzip -d myFile.xlsx xl/media/image1.png
Bastien Jansen
35

tl; dr: это заливка фигуры по умолчанию, которая не нужна, если фигуры отсутствуют.

XLSX, DOCX и другие форматы используют OPC (соглашения об открытой упаковке), который предписывает zip-контейнер и описывает, как файлы должны быть размещены. Если есть файл, который вы не можете распознать, просмотрите различные файлы отношений (они заканчиваются на .rels).

В этом случае соответствующая строка может быть найдена в файле отношений тем xl/theme/_rels/theme1.xml.rels:

  <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="../media/image1.png"/>

Файл будет указан xl/theme/theme1.xmlкак rId1. Используя ECMA-376 в качестве руководства, вы найдете его в качестве заливки формы по умолчанию:

<a:objectDefaults>                    <-- shape/line/text defaults
  <a:spDef>                           <-- shape defaults
    <a:spPr>                          <-- shape properties
      <a:blipFill rotWithShape="1">   <-- picture fill
        <a:blip r:embed="rId1"/>      <-- references the picture

Автор не должен пропускать изображение, если нет формы.

SheetJS
источник
31

Файлы Keynote, экспортированные в PowerPoint, тоже делают подобные вещи. Этот PNG является фоновой заливкой из Keynote и предоставляется PowerPoint для использования в качестве заливки фигур по умолчанию для фигур, созданных в экспортированном документе. Keynote не только экспортирует ваш документ, но также и элементы стиля шаблона, с которыми он был создан - даже если некоторые из этих элементов стиля (например, фоновое изображение) еще не использовались.

GCP
источник