Подтвердить что ты не робот

Как подавить файл коррумпированного предупреждения при загрузке Excel?

У меня есть веб-страница, которая ссылается на лист Excel 2007. Это файл .xls, а не .xlsx. Когда я нажимаю на ссылку, я получаю обычное диалоговое окно для открытия/сохранения файла Excel. При нажатии "Открыть" появляется следующее предупреждающее сообщение -

Файл, который вы пытаетесь открыть, 'filename.xls' находится в другом формат, указанный в файле расширение. Убедитесь, что файл не поврежден и из надежного источника перед открытием файла. Вы хотите открыть файл сейчас?

Могу ли я каким-то образом подавить это предупреждающее сообщение программным способом (т.е. скрыть или предотвратить его появление?) Я использую ColdFusion для веб-разработки.

4b9b3361

Ответ 1

Эта проблема возникает из-за функции, называемой Extension Hardening, и вы можете найти дополнительную информацию об этом здесь

Я столкнулся с этой проблемой много в моих проектах, и, как сказал Джон, отключить Extension Hardening - это то, что нужно сделать каждому пользователю на стороне клиента.

К сожалению, ссылка выше также указывает, что ожидаемых изменений в этом коде не ожидается, по крайней мере, до Office 14.

Ответ 2

Если вы не хотите искать решение, но просто хотите решить проблему, вставьте этот ключ в свой реестр, чтобы подавить уведомление:

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] "ExtensionHardening" = DWORD: 00000000

Вы можете выполнить вышеуказанное, выполнив следующие действия:

  • Откройте свой реестр (Пуск → Выполнить → regedit.exe)
  • Перейдите в HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\OFFICE\12.0\EXCEL\SECURITY
  • Щелкните правой кнопкой мыши в правом окне и выберите "Создать" → DWORD
  • Напечатайте "ExtensionHardening" как имя (без кавычек)
  • Убедитесь, что данные имеют значение "0"

Ответ 3

Для старого формата Excel (.xls)

Предполагая, что вы создаете свой объект электронной таблицы с помощью этого синтаксиса:

<cfset sheet = SpreadsheetNew() /> 

Вы использовали бы это для создания загрузки:

<cfheader name="content-disposition" value="attachment;filename=my_spreadsheet.xls">
<cfcontent type="application/vnd.ms-excel" variable="#spreadsheetReadBinary(sheet)#" reset="true">

Для нового формата Excel (.xlsx)

Создайте свой объект электронной таблицы с помощью этого синтаксиса:

<cfset sheet = SpreadsheetNew("", "true") />

И используйте это для создания загрузки:

<cfheader name="content-disposition" value="attachment;filename=my_xml_spreadsheet.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sheet)#" reset="true">

Благодаря Raymond Camden для большей части этого (его пример был для создания электронной таблицы в более старом формате - я обновился для новых формат и использование немного разных значений MIME).

Ответ 4

Я не верю, что вы можете скрыть его от пользователя. Такие предупреждения являются внешними для вашего браузера.

Ответ 5

В сообщении указано, что содержимое файла и расширение файла не совпадают. Таким образом, либо файл XLSX, либо текущий файл на сервере каким-то образом сломался. Я предлагаю попробовать открыть файл с помощью инструмента ZIP. Если это работает, это действительно файл формата XLSX. Затем вы можете исправить предупреждение, переименовав файл.

Если это не так, что-то случилось с файлом.

Но в любом случае подавление предупреждения не является решением вашей проблемы. В следующий раз, когда появится вирус, и попросит ваших клиентов открыть nakedgrls.gif.exe, вам лучше не возиться с настройками безопасности.

Ответ 6

Если вы используете удобный трюк cfcontent для вывода в качестве файла excel, подумайте об использовании cfx_query2excel, он напишет реальные файлы excel, которые должны были пройти мимо этого. Это библиотека Java и стоила того.

Желаем удачи.

Ответ 7

Если вы не указали расширение файла, оно, вероятно, получило имя как .cfm файл с типом контента как "application/vnd-excel", который вызывает это предупреждение.

Попробуйте добавить это до выхода файла:

<cfheader name="Content-Disposition" value="attachment;filename=myexcelfile.xls">
<cfcontent type="application/ms-excel" reset="true">

Ответ 8

У меня была такая же проблема, и клиент жаловался на это. Я много сделал, но не повезло. Наконец, я создал таблицу с использованием cfspreadsheet, я знаю, что для нее требуется дополнительная работа, чем прямое создание через HTML, но она устраняет предупреждение.