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

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

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

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

 Adam Tuttle02 июн. 2009 г., 18:58
Это для одного конкретного файла XLS или для каждого файла XLS, который вы пытаетесь? Рассматривали ли вы возможность того, что один файл может быть поврежден? Если это каждый файл XLS, то он звучит как опция Excel / Windows, которой вы не можете управлять на компьютере пользователя с помощью ColdFusion (или любого другого серверного языка).
 Kevin Ng09 окт. 2018 г., 05:13
Вы можете попробовать использовать SheetJS, обратитесь к моему ответуВот.
 ceejayoz02 июн. 2009 г., 17:19
Почему бы просто не оставить расширение как .XLSX?
 Peter Boughton02 июн. 2009 г., 19:39
Адам, это новая «особенность» Excel - раньше вы могли просто создать файл CSV или таблицу HTML и назвать его XLS, но теперь это приводит к глупому диалоговому окну при каждом открытии файла (кроме случаев, когда отдельный клиент отключает его ).

Ответы на вопрос(8)

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

[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Щелкните правой кнопкой мыши в правом окне и выберите New -> DWORD.Введите «ExtensionHardening» в качестве имени (без кавычек)Убедитесь, что данные имеют значение «0»
 Arnkrishn02 июн. 2009 г., 17:07
Спасибо Джон. Могу ли я сделать это программно, скажем, с помощью Coldfusion?
 jgallant02 июн. 2009 г., 17:11
Мой обходной путь для одной локальной машины. Насколько мне известно, веб-приложение не сможет редактировать реестр.

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

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

Удачи.

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

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

 Boris03 дек. 2014 г., 16:33
Хотя это работает на моем сервере CF9, это не работает на CF11. Это говорит о том, что файл не может быть открыт из-за неправильного формата файла или file-endig. Есть что-нибудь еще на CF11? Нужно ли устанавливать OpenOffice на сервер? Работает, при отправке файла в виде email-вложения. Может быть, что-то с IIS.

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

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

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

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

Решение Вопроса

и вы можете найти больше информации о нейВот

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

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

 Henry26 июн. 2009 г., 01:53
Я думаю, что это применимо, только если вы используете CSV и сохраните как XLS. Однако, если вы создаете настоящий файл Excel, то все должно быть в порядке. CF9 будет вашим другом. :)
 Mr. Xymon26 апр. 2012 г., 09:22
Я согласен с @Henry, я только что столкнулся с этим предупреждением, когда пытался открыть файл .xls, который был экспортирован из JTable в java с использованием класса FileWriter.

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

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

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

Ваш ответ на вопрос