ColdFusion11:CFContent不会写可打开的excel文件

时间:2014-12-03 17:10:07

标签: excel iis coldfusion cfspreadsheet coldfusion-11

我正在尝试在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 Excelnichtgeöffnetwerden,da das Dateiformat oder dieDateierweiterungungültigist。 ÜberprüfenSie,ob dieDateibeschädigtistund ob die Dateierweiterung dem Dateiformat entspricht。

这意味着:

Excel无法打开文件'NiceName.xlsx',因为文件格式或结尾无效。请验证,如果文件已损坏,文件结尾对应于文件格式。


我可以:

  • <cfmailparam>工作表并通过邮件接收文件。
  • <cfspreadsheet action="write">工作表并在服务器上接收文件。

在这两种情况下,文件都是可读的。


我试过了:

  • <cfspreadsheet action="write">工作表,然后使用<cfcontent file="#pathToFile#">,这不起作用。
  • 检查我的IIS是否有URL-Rewrite-Rules。
  • 检查我的IIS是否有.xlsx MIME-Type。它和我的代码一样。
  • 最后添加了<cfabort>,所以别的什么都不会发生。

但没有任何帮助。


我正在使用:

  • ColdFusion 11(11,0,0,289974),Tomcat 7.0.52.0
  • Windows Server 2008 R2标准版64位
  • Microsoft Office 2013
  • IIS 7.5.7600.16385

1 个答案:

答案 0 :(得分:0)

尝试使用application/vnd.ms-excel而不是openoffice。这将是一个excel特定的mime类型。使用openoffice的人会自动转换,因为他们设置了这种方式。这是我在这里看到的唯一一件事。