【问题标题】:How to generate excel file (xls) and save it to a server location without downloading it using ColdFusion如何在不使用 ColdFusion 下载的情况下生成 excel 文件 (xls) 并将其保存到服务器位置
【发布时间】:2020-09-09 20:25:17
【问题描述】:

我们有一个页面正在生成动态内容,并根据用户的选择输出格式。

例如,如果用户选择了 HTML 格式,那么页面将作为 HTML 页面出现。这和 PDF 格式一样好用。

挑战在于,如果用户选择 Excel 格式并且我们需要将 Excel 文件保存到服务器。

当用户选择 Excel 格式时,文件在 excel 中生成就好了,但是,用户没有将其保存到服务器,而是得到另存为对话框,但是,正如我所提到的,我们需要将文件保存到服务器。

非常感谢任何输入。 我们正在使用 CF 2016。

代码示例:

<cfsavecontent variable="Page"> 
    <cfif CompareNoCase(FORM.format,"xls")>
       <cfsetting enablecfoutputonly="Yes">
       <cfheader name="Content-Disposition" value="attachment;filename=""#VARIABLES.vcFilename#""">
       <cfcontent type="application/vnd.msexcel">
    <cfif>
    <table><tr><td><cfoutput>#somecontent#</cfoutput></td></tr>...</table>
</cfsavecontent>
<cfif CompareNoCase(FORM.format,"xls")>
   <cffile 
            action="write" 
            destination="d:\somedir\"
            file="#VARIABLES.vcFileName#" 
            output="#Page#" 
            nameconflict="overwrite">
<cfif>

【问题讨论】:

  • Cfheader/cfcontent 总是被立即评估。这就是您收到下载提示的原因。如果您不需要下载,请将其删除。
  • 谢谢,解决了

标签: excel coldfusion coldfusion-2016 cffile


【解决方案1】:

正如 SOS 在 cmets 中提到的,他删除标题的建议起到了作用。 此外,为了保存 excel 文件 (.xls),在 cffile 中添加了以下内容: 接受="application/vnd.ms-excel,application/xls"

【讨论】:

  • 如果你真的想要一个有效的 excel 文件,使用 html 并将页面保存为 xls 并不能真正起作用。您可以查看&lt;cfspreadsheet&gt;SpreadSheetNew 并以此为基础。
  • 实际上当我添加到 cffile accept="application/vnd.ms-excel,application/xls" 时它起作用了,我不需要在生成的文件中添加任何额外的功能,只需要基本的 excel
  • 不,该属性仅适用于上传。 Jas 与保存/写入文件无关。从技术上讲,您生成的是 html。您可以给文件一个 .XLS 扩展名,但内容仍然是 html,不是有效的 Excel 文件。大多数版本的 Excel 会在您尝试打开文件时发出警告,即内容与声明的标题不匹配。
  • 实际上,我们不是在追求有效的excel,这确实是带有制表符作为分隔符并以xls扩展名保存的html文件。我们尝试编写扩展名为 xls 的文件,但没有成功。它适用于 csv、txt 文件。但是,我们需要 xls。我阅读了文档,并且知道 accept="application/vnd.." 不适用于写入操作,但是我尝试过并且它有效。使用 xls ext 生成文件并保存在服务器上。当我打开它们时,所有格式都按预期工作
  • 对于写入,您可以指定几乎任何您想要的文件名。如果失败,可能是因为 cffile 代码具有错误的属性。它不应该使用destination。这仅适用于上传。
猜你喜欢
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-27
相关资源
最近更新 更多