ColdFusion11: CFContent не записывает открываемый файл Excel

Я пытаюсь выполнить простую задачу в ColdFusion: создать файл Excel и загрузить его в браузер. У меня есть это:

<cfset local.sheet = SpreadsheetNew("My Spreadsheet", "true") />
<cfset SpreadsheetAddRow(local.sheet, "Col1,Col2,Col3") />

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

Что отлично работало на CF9, но не на CF11. При открытии файла пишет:

Die Datei 'NiceName.xlsx' kann von Excel nicht geöffnet werden, da das Dateiformat oder die Dateierweiterung ungültig ist. Überprüfen Sie, ob die Datei beschädigt ist und ob die Dateierweiterung dem Dateiformat entspricht.

Что переводится как:

Excel не может открыть файл "NiceName.xlsx", так как либо формат файла, либо окончание -недопустимы. Пожалуйста, проверьте, не поврежден ли файл и соответствует ли окончание файла формату файла.


Я могу:

  • <cfmailparam> лист и получить файл по почте.
  • <cfspreadsheet action="write"> лист и получите файл на сервере.

В обоих случаях файлы доступны для чтения.


Я пытался:

  • <cfspreadsheet action="write"> лист, а затем используйте <cfcontent file="#pathToFile#">, что не работает.
  • Проверил свой IIS на предмет URL-Rewrite-Rules.
  • Проверил свой IIS на наличие MIME-типа .xlsx. Это то же самое, что и в моем коде.
  • Добавил в конце <cfabort>, чтобы больше ничего не происходило.

Но ничего не помогло.


Я использую:

  • ColdFusion 11 (11,0,0,289974) с Tomcat 7.0.52.0
  • Windows Server 2008 R2 Стандартная 64-разрядная версия
  • Майкрософт Офис 2013
  • ИИС 7.5.7600.16385

person Boris    schedule 03.12.2014    source источник
comment
Борис, Единственное, что я вижу, это то, что ты мне странен. Обычно я вижу что-то вроде application/excel для типа. Вы используете тип документа openoffice. Я не уверен, что это поможет.   -  person Mark A Kruger    schedule 03.12.2014
comment
У меня код Sam работает с CF11 на IIS 7/7.5   -  person Anit Kumar    schedule 03.12.2014
comment
Я предполагаю, что tomcat неправильно передает данные в IIS. Можете ли вы передать другой тип контента, например изображение, в браузер?   -  person Twillen    schedule 03.12.2014
comment
@MarkAKruger - Нет, поскольку он использует xmlformat=true, это правильный MIME-тип. Проблема в другом. (Редактировать) Неважно. Я вижу, Твиллен уже упоминал об этом.   -  person Leigh    schedule 03.12.2014
comment
Борис, твой пример кода у меня тоже отлично работает. Вы хотите сказать, что тот код не работает у вас? Или это, возможно, пример, который на самом деле непреднамеренно не включает в себя то, что вызывает у вас проблему? Возможно (но маловероятно) это то, что я использую ColdFusion 11,0,02,291725, а у вас, похоже, нет исправлений..? Какую версию вы использовали @AnitKumar?   -  person Adam Cameron    schedule 04.12.2014
comment
Я использую CF 11,0,01,291346 @Adam   -  person Anit Kumar    schedule 04.12.2014
comment
Я мог бы передавать файл .txt с текстом/простым MIME-типом в браузер. Это сработало.   -  person Boris    schedule 04.12.2014
comment
Файл .txt находился в том же каталоге, что и файл .xls. (Примечание: файлы находятся за пределами веб-корня)   -  person Boris    schedule 04.12.2014
comment
Поговорю с администратором моего сервера и опубликую результаты как можно скорее   -  person Boris    schedule 04.12.2014
comment
Просто из нездорового любопытства я задаюсь вопросом, сработает ли вместо этого создание .xls.   -  person James A Mohler    schedule 04.12.2014
comment
Нет, создание .xls тоже не сработало, протестировано со всеми вариантами MIME-типа. Попробую application/octet-stream завтра, а затем, возможно, обновлю сервер.. Спасибо за все идеи!   -  person Boris    schedule 04.12.2014


Ответы (1)


Попробуйте использовать application/vnd.ms-excel вместо разновидности openoffice. Это будет особый тип пантомимы Excel. Люди, использующие openoffice, будут конвертировать автоматически, потому что они настроили его таким образом. Это единственное, что я здесь вижу.

person Mark A Kruger    schedule 03.12.2014
comment
Тип mime является правильным. application/vnd.ms-excel — для файлов xls, а application/vnd.openxmlformats-officedocument.spreadsheetml.sheet — для xlsx blog.msdn.com - person Twillen; 03.12.2014
comment
Я бы все равно попробовал :) или попробуйте application/octet-stream - person Mark A Kruger; 03.12.2014
comment
Пробовал и другие MIME-типы. С xls и xlsx. Но мне никакая вариация не подошла. - person Boris; 04.12.2014