При экспортировании отчета в виде 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 было четко указано:
Для того, чтобы это предупреждение для данного файла больше не отображалось при его открытии, нужно пересохранить этот файл, изменив его тип с "Веб-страница (*.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.
Для упрощения данной операции можно создать текстовый файл со следующим содержимым:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\14.0\Excel\Security]
"EnableDEP"=dword:00000000
"ExtensionHardening"=dword:00000000
сохранить и сменить расширение с .txt на .reg
Затем запустить этот файл и разрешить внесение изменений в реестр Windows.
После этого сообщение "Действительный формат открываемого файла (report.xls) отличается от указываемого его расширением имени файла. Перед открытием данного файла убедитесь, что он не поврежден и получен из надежного источника. Открыть этот файл сейчас?" не будет отображаться, и файл будет сразу открываться.
С одной стороны это не проблема - получив отчет из 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-файл.