Почему файл эксель скачивается в другом формате
На прошлой неделе Microsoft опубликовала спецификации форматов бинарных файлов для Office. Эти форматы выглядят безумно. Формат файла Excel 97-2003 представляет собой 349-страничный файл PDF. И это ещё не всё! В документе содержится такой комментарий:
Каждый лист [workbook] в Excel хранится в составном файле.
Видите ли, файлы Excel 97-2003 – это составные документы OLE, которые в свою очередь представляют собой некое подобие файловой системы в одном файле. Чтобы в этом разобраться, нужно прочитать 9 страниц документации. А сами спецификации больше похоже на структуры данных в С, чем на то, что мы привыкли называть спецификациями. Это иерархическая система файлов.
Если вы подумали, что почитаете эти форматы и за выходные набросаете утилитку для экспорта вордовских документов в свой блог, или создающую экселевские таблички на основе ваших персональных финансовых данных, то сложность и длина этих спецификаций должны были отбить у вас всю охоту. Нормальный программист решит, что формат бинарников из Office:
- сделан запутанным специально
- придуман каким-то страдающим от старческого маразма представителем кибернетической расы боргов
- создан безумно плохими программистами
- не может быть правильно создан или прочитан
Первое, что нужно понять – цели у разработчиков форматов бинарников кардинально отличались от целей разработчиков, допустим, HTML.
Они должны были очень быстро работать на очень старых компьютерах. Во времена первых версий Excel для Windows 1 мегабайт памяти был не редкостью, а работать достаточно комфортно программа должна была на процессорах 80386 с частотой 20 МГц. Множество оптимизаций сделано для ускорения открытия и сохранения файлов:
- Это форматы бинарных файлов, поэтому загрузка записи обычно означает копирование последовательности байтов с диска в память, в которой появляется структура данных С. Не происходит никакого разбора или лексического анализа данных, так как это в разы медленнее простого копирования.
- Формат файлов запутан в нужных местах для ускорения типичных операций. К примеру, у Excel 95 и 97 была функция «простого сохранения», которая использовалась в качестве ускоренного варианта документа OLE, полная версия которого была не слишком быстрой для повсеместного использования. У Word было нечто подобное под названием "быстрое сохранение". Для быстрого сохранения длинных документов 14 раз из 15 все изменения просто добавлялись в конец файла, а весь файл не перезаписывался с нуля. Для жёстких дисков того времени это означало, что можно было успеть сохранить документ, допустим, за 1 секунду вместо 30. Также это означало, что удалённые части документа всё ещё хранились в файле – а людям, как оказалось, это не было нужно.
У Office была поддержка составных документов, к примеру, можно было включить электронную таблицу в файл Word. Идеальный парсер Word должен был суметь сделать что-то умное с включённой таблицей.
Они не разрабатывались для использования в других приложениях. Довольно разумное на тот момент предположение заключалось в том, что формат Word будет писать и читать только программа Word. Поэтому когда программист из команды разработчиков Word принимал решение о смене формата файла, его волновали лишь а) скорость работы и б) минимальное количество строк в коде Word. Идеи вещей типа SGML и HTML, заменяемых, открытых и стандартизированных форматов, не были популярными, пока интернет не сделал такие вещи практичными. Этот момент пришёл через 10 лет после разработки форматов файлов Office. Всегда предполагалось использование программ для экспорта и импорта. У Word есть поддержка формата для простого обмена документами по имени RTF, существовавшего почти с самого начала.
Им нужно было отразить всю сложность приложений. Каждую галочку, каждую возможность форматирования и каждую функцию Microsoft Office необходимо было хранить в файлах. Поэтому для создания идеального клона Word, читающего его файлы, нужно было реализовать все его функции. Если вы создаёте программу для работы с текстом – конкурента Word, которая должна уметь загружать его файлы, у вас может занять немного времени сама загрузка указанных в файле опций. Но реальное отображение их всех на странице – это задача более сложная. А если её не решить, то ваши клиенты откроют вордовский файл в вашем клоне, и всё форматирование может поломаться.
Им нужно было отражать историю развития программ. Множество сложных вещей в форматах – это старые, сложные, ненужные и редко используемые функции. Они присутствуют там лишь для обратной совместимости и потому, что для разработчиков ничего не стоит оставить код в покое. Но чтобы тщательно выполнить работу разборки или записи этих файлов, вам придётся повторить всю эту работу, что была проделана в Microsoft за 15 лет. В текущие версии Word и Excel вложены тысячи человеко-часов работы, и для клонирования этих программ вам придётся вложить свои тысячи человеко-часов. Формат файла – это просто краткое обобщение всех поддерживаемых приложением функций.
Просто для примера разберём одну возможность подробнее. Лист Excel – это набор разных записей BIFF. Рассмотрим самую первую запись в спецификации – это запись под именем 1904.
В спецификации об этой записи написано весьма туманно. Просто написано, что «запись 1904 показывает, используется ли система дат 1904». Классический пример бесполезной спецификации. Если бы вы были разработчиком, и наткнулись бы на такое «объяснение», вы бы весьма оправданно пришли к заключению, что Microsoft что-то скрывает. Такое описание недостаточно само по себе, вам нужно искать дополнительную информацию. Я поясню: существует два типа листов Excel. В одних даты начинаются с 1/1/1900 (в них же ошибка високосного года специально создана для совместимости с форматом 1-2-3), в других – с 1/1/1904. Excel поддерживает оба варианта – поскольку первая его версия, для Mac, использовала второй вариант, который был системным, а Excel для Windows должен был иметь возможность импортировать файлы 1-2-3, использовавшие даты с 1/1/1900. Уже на этом месте можно расплакаться.
Оба типа файлов, 1900 и 1904, встречаются в изобилии в дикой природе, в зависимости от того, пришли они с Mac или Windows. Автоматическая конвертация дат может привести к ошибкам, поэтому Excel сам тип файла не меняет. Для разборки файлов Excel приходится работать с обоими. А это значит, что вам не просто нужно загрузить этот бит из файла, но ещё и переписать весь код разбора и показа дат, чтобы обрабатывать оба варианта. Это работа на несколько дней.
Работая над клоном Excel вы встретите множество таких скрытых деталей по работе с датами. Когда Excel преобразовывает числа в даты? Как работает форматирование? Почему 1/31 интерпретируется как 31 января текущего года, а 1/50 – как первое января 1950? Все эти детали нельзя описать без того, чтобы получившееся описание не сравнялось по объёму с исходниками Excel.
И это только одна из сотен BIFF-записей, и одна из простейших. Большинство из них настолько сложные, что могут заставить взрослого программиста рыдать.
Единственное возможное решение будет следующим. Конечно, Microsoft оказала большую услугу, опубликовав форматы файлов, но импортировать их или сохранять в них от этого легче не будет. Это безумно сложные приложения, и вы не можете просто реализовать 20% самых популярных функций и рассчитывать, что 80% остальных людей будут счастливы. Спецификации бинарников в лучшем случае сохранят вам пару минут при реверс-инжиниринге сложной системы.
Но я обещал рассказать, что с этим делать. Почти всем популярным приложениям не нужно заниматься чтением и записью бинарников от Office. Есть две альтернативы: дать Office работать самому, или использовать более простые форматы файлов.
Пусть Office работает сам. У Word и Excel есть весьма полные модели объектов, доступные через COM Automation, благодаря чему в программе можно сделать всё. Во многих случаях лучше повторно использовать код из Office вместо попыток написать его заново. Примеры:
- Открытие листа Excel, сохранение некоторых данных в ячейках, подсчёт и выдача результата.
- Использования Excel для создания графиков в формате GIF
- Вытаскивание любой информации из файла Excel без разбора форматов файлов
- Преобразование файла Excel в CSV (другой подход – использовать драйверы Excel ODBC и забирать данные через SQL-запросы)
- Редактирование документов Word
- Заполнение форм в Word
- Преобразование файлов между разными форматами, которые поддерживает Office (существуют возможности импортирования десятков форматов текстовых процессоров и электронных таблиц).
Используйте форматы попроще. Если вам просто нужно программно создать документы для Office, почти всегда есть формат получше, который затем можно свободно открыть в Word или Excel.
Расширение файла находится в конце файла, что помогает определить тип файла в операционной системе. В Microsoft Windows расширение файла - это период, за которым часто следуют один, два, три или четыре символа.
Например, имя файла «XYZ.doc» имеет расширение «.doc», которое является расширением файла, связанным с файлом документа.
Расширения файлов Excel могут быть разных типов. Здесь мы рассмотрим наиболее распространенный тип файла:
Это расширение является наиболее распространенным типом по умолчанию в электронной таблице, созданной офисом Microsoft. До Excel 2007 расширение файла было XLS. Это расширение относится к файлу, который содержит все типы информации, включая данные, форматы, графику и т. Д. Операционная система распознает тип файла с помощью расширения и управляет этим файлом с помощью приложения Excel.
XLS является типом файла по умолчанию для Excel версии 2.0 до Excel 2003.
Это расширение используется файлами электронных таблиц, созданными в Excel версии 2007 года. Для файла Excel текущее расширение файла по умолчанию - XLSX.
XSLX - это формат файла на основе XML. При использовании этой технологии файл с форматом XSLX имеет меньший вес или размер, и по сравнению с форматом файла XLS это приводит непосредственно к экономии места. Это требует меньше времени для загрузки или загрузки документов Excel.
Единственным недостатком этого расширения XSLX является то, что эта версия несовместима для запуска файлов до Excel 2007.
Этот тип файла расширения генерируется электронной таблицей с Excel версии 2007 года, включая макросы Excel.
С помощью расширения легко понять, что файл содержит макрос. Из-за соображений безопасности и защиты файла с помощью компьютерных вирусов, вредоносных макросов, заражения компьютеров и т. Д. Эта версия появляется.
Это расширение файла очень надежно с точки зрения макросов и по соображениям безопасности.
Если файлы Excel содержат большой объем данных или информации, этот тип расширения полностью поддерживается в процессе сжатия, сохранения, открытия и т. Д.
Файл Excel, который содержит большой объем данных, занимает много времени при открытии и обработке этого файла. Иногда при вскрытии его вешают и часты аварии.
Как изменить формат файла Excel или расширение?
Для изменения расширения файла выполните следующие действия:
- Откройте книгу, для которой вы хотите изменить формат.
- Перейдите на вкладку ФАЙЛ .
- Откроется окно левой панели. На этой панели доступно много вариантов. Смотрите скриншот ниже.
- Нажмите на опцию Сохранить как, как показано ниже.
- Теперь вам нужно выбрать, куда вы хотите сохранить файл в системе. Смотрите скриншот ниже.
- Я выбрал рабочий стол для сохранения этого файла в качестве места назначения.
- В поле «Имя файла» укажите имя файла для книги.
- В поле « Сохранить как тип» нам нужно выбрать формат файла.
- Нажмите Save as type filed, откроется список формата, как показано на скриншоте ниже.
- Выберите формат файла и нажмите кнопку « Сохранить» для сохранения файла.
Как узнать тип сохраняемого файла?
Для этого выполните следующие шаги:
- Выберите файл, для которого вы хотите знать формат файла.
- Щелкните правой кнопкой мыши по этому файлу.
- Откроется раскрывающийся список параметров.
- Нажмите на опцию Свойства из списка. Смотрите скриншот ниже.
- Откроется окно свойств.
- Под опцией Тип файла вы можете увидеть тип файла или расширение файла. Смотрите скриншот ниже.
Что нужно помнить о форматах файлов Excel
- Все форматы файлов не поддерживают все функции Excel, такие как формулы и т. Д., Поэтому будет отображаться окно с предупреждением.
- Затем вы можете изменить формат файла снова.
Рекомендуемые статьи
Это было руководство по расширениям Excel. Здесь мы обсуждаем, как изменить формат файла Excel или расширение вместе с его практическими примерами. Вы также можете просмотреть наши другие предлагаемые статьи -
При экспортировании отчета в виде XLS-файла из Salesforce с помощью кнопки "Export Details" при последующем открытии этого Excel-файла на компьютере офис показывает предупреждение о том, что формат файла не совпадает с его расширением:
Можно нажать на кнопку "Да", чтобы открыть файл. Или нажать на кнопку "Нет", чтобы не открывать :)
Справку Microsoft вообще смысла нет открывать - там нет нужной информации.
Полный текст предупреждения на русском языке:
Действительный формат открываемого файла (report.xls) отличается от указываемого его расширением имени файла. Перед открытием данного файла убедитесь, что он не поврежден и получен из надежного источника. Открыть этот файл сейчас?
Полный текст предупреждения на английском языке:
The file format and extension of report.xls don't match. The file could be corrupted or unsafe. Unless you trust its source, don't open it. Do you want to open it anyway?
Самое интересное, что при экспорте из Salesforce было четко указано:
- формат файла - Excel Format .xls
- кодировка файла - Unicode (UTF-8), хотя тип выбранной кодировки абсолютно не влияет на ситуацию.
Для того, чтобы это предупреждение для данного файла больше не отображалось при его открытии, нужно пересохранить этот файл, изменив его тип с "Веб-страница (*.htm,*.html)" на "Лист Microsoft Excel 97-2003 (*.xls)" или на "Книга Excel с поддержкой макросов (*.xlsx)":
При сохранении нового отчета придется повторять эту процедуру снова :((((
На компьютере с OS Windows можно отключить это предупреждение и сделать так, чтобы MS Office сразу открывал файлы, у которых тип не совпадает с содержимым. Для этого необходимо внести изменение в реестр в соответствующей ветке установленной версии MS Office.
Необходимо в ветке реестра [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\14.0\Excel\Security] (указанный путь для MS Ofice 2012!) создать параметр DWORD (32 бита) с именем ExtensionHardening и значением 0.
Для упрощения данной операции можно создать текстовый файл со следующим содержимым:
сохранить и сменить расширение с .txt на .reg
Затем запустить этот файл и разрешить внесение изменений в реестр Windows.
Как открывать такие файлы на смартфоне?
С одной стороны это не проблема - получив отчет из Salesforce, пересохранить файл и спокойно дальше с ним работать, но, с другой стороны, данное несовпадение не дает просматривать эти файлы на мобильных устройствах - например, ни iOS-приложение Outlook не может отобразить содержимое таких файлов, ни приложение Office (ох уж эти Microsoft!):
Поиск в интернете - как решить эту проблему, не был продуктивным. Была найдена информация, что компания Microsoft, начиная с MS Office 2007 внедрила эту проверку и назвала её "Extension Hardening" (с натяжкой можно перевести это на русский как "Усиление расширения"), эта проверка гарантирует (или не гарантирует и сообщает об этом :), что содержимое открываемого файла соответствует указанному расширению.
Для файлов с расширением XLS тип файла (MIME) должен быть в формате XLS (BIFF8) - application/vnd.ms-excel, чтобы открываться без предупреждения.
Если тип файла имеет другой формат, то пользователь обязательно получит предупреждение в сплывающем окне, поскольку содержимое файла отличается от расширения или типа MIME. Например, HTML-файл имеет следующий MIME: text/html.
Проверить MIME не сложно. Если открыть XLS-файл-отчет? полученный из Salesforce, то сразу в первой строке видно, что тип файла - HTML. И html-теги в следующих строках дополнительно это подтвеждают:
Получается, что по факту Salesforce экспортирует HTML-файл, но расширение к нему прицепляет экселевское.
Умный Excel при открытии таких файлов воспринимает и отображает их нормально, но для полноценного дальнейшего использования все-таки надо их вручную преобразовывать в другой тип (XLS или XLSX).
Странно, что при экспорте нет возможности указать типа файла - HTML/HTM, в этом случае он открывался бы для просмотра в другом приложении, а не в капризном Excel.
Но это не всё!
При создании XLS-файлов в Salesforce с помощью APEX похожее предупрежедение также может отображатся, так как в этом случае файл с расширением XLS скорее всего будет представлять собой XML-файл.
«Excel не может открыть файл 'filename.xlsx', потому что формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла ».
Прежде чем нажать кнопку «Да», чтобы открыть файл, необходимо выяснить, почему файл может иметь неправильное расширение имени файла.
Файл мог быть:
Если вы или кто-то из ваших знакомых случайно переименовал файл с неверным расширением, вы можете смело открывать файл. Затем сохраните файл в формате файла с соответствующим расширением имени файла.
Если вы или кто-то из ваших знакомых специально переименовал файл с другим расширением, чтобы Excel распознал расширение имени файла, вы можете открыть его. Однако рекомендуется хранить файл с расширением имени файла, соответствующим его фактическому формату.
Причины этой ошибки Excel:
- Файл не совместим с версией Excel.
- Файл поврежден или поврежден.
Ручная модификация расширения
Несколько заинтересованных пользователей, которые также столкнулись с этой проблемой, сообщили, что им удалось решить проблему вручную (переименовав) расширение для различных популярных форматов Excel, пока они не нашли правильный.
Ноябрьское обновление 2021:
Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows - нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:
Используйте функцию «Открыть и восстановить» в MS Excel
Функция «Открыть и восстановить» - это функция в MS Excel для восстановления поврежденных файлов Excel. Чтобы использовать его, выполните следующие действия:
- Откройте приложение MS Excel
- Перейдите в Файл и выберите опцию Открыть.
- Выберите поврежденный файл и выберите Открыть и восстановить.
- Нажмите «Восстановить», чтобы начать ремонт.
Примечание. Если процесс восстановления Excel завершился неудачно при последнем использовании функции «Открыть и восстановить», повторите шаги с (i) по (v). Затем нажмите кнопку «Извлечь данные», чтобы извлечь значения и формулы из файла Excel.
Разблокировка файла
Оказывается, ошибка «Формат файла и расширение не совпадает» также может возникать из-за того, что она заблокирована в свойствах. Это типичный случай для файлов, загруженных из Интернета или полученных в качестве защиты через вложения электронной почты.
Откройте файл Excel в безопасном режиме.
Шаг 1: нажмите клавишу Windows + R, введите: excel.exe / safe и нажмите ОК.
Шаг 2: сохраните файл как .xlsx. Иногда полезно получить доступ к вашим данным, если Excel не может открыть файл .xlsx из-за повреждения файла.
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Читайте также: