Как подавить предупреждение о повреждении файла при загрузке Excel? - PullRequest
18 голосов
/ 02 июня 2009

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

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

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

Ответы [ 8 ]

18 голосов
/ 02 июня 2009

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

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

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

  1. Открыть реестр (Пуск -> Выполнить -> regedit.exe)
  2. Перейдите в HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ OFFICE \ 12.0 \ EXCEL \ SECURITY
  3. Щелкните правой кнопкой мыши в правом окне и выберите New -> DWORD
  4. Введите «ExtensionHardening» в качестве имени (без кавычек)
  5. Убедитесь, что данные имеют значение «0»
10 голосов
/ 02 июня 2009

Эта проблема является следствием функции, называемой расширением усиления, и вы можете найти больше информации о ней здесь

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

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

2 голосов
/ 18 декабря 2013

Для старого формата 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).

0 голосов
/ 30 января 2012

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

0 голосов
/ 03 июня 2009

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

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

<cfheader name="Content-Disposition" value="attachment;filename=myexcelfile.xls">
<cfcontent type="application/ms-excel" reset="true">
0 голосов
/ 03 июня 2009

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

Удачи.

0 голосов
/ 02 июня 2009

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

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

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

0 голосов
/ 02 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...