excel - 下载excel表查询结果,无需写入文件coldfusion

标签 excel coldfusion

我有一个简单的查询,我希望通过单击按钮将其结果下载到 Excel 中,而不将文件写入磁盘。我正在做的事情的要点。

<cfquery name="qtest" datasource="xyz">
select a,b,c from table
</cfquery>

<cfspreadsheet action="write" fileName="test.xls" query="the_jobfeed" overwrite=true />
<button>click here </button>

我认为将文件写入磁盘就可以了。因此我正在做上述事情。但是如何在 Excel 工作表上保留查询列的大小写。

最佳答案

这是 SpreadSheetService.cfc 的 stub 它将把查询转换为 Excel 文件,而无需将其写入可通过 Web 访问的文件夹。

主函数createFromQuery有3个参数:

  1. 数据(查询对象)
  2. xlsx( bool 值,xls [false,默认] 或 xlsx [true])
  3. fileName(字符串,如果为空则使用 UUID。)

此服务使用服务器的临时目录作为创建、编译文件并将其读取到浏览器的位置。一旦文件被读入内存,物理文件就会从临时目录中删除,以确保没有其他进程可以访问它。

代码核心:

<cftry>
    <cfspreadsheet action="write" filename="#config.full_temp_name#" query="config.q" />
    <cfspreadsheet action="read" src="#config.full_temp_name#" name="local.xls" />
    <cffile action="delete" file="#config.full_temp_name#" />

    <cfif len(arguments.fileName) GT 0>
        <cfheader name="content-disposition" value="attachment; filename=#arguments.fileName#.#config.extension#" />
    <cfelse>
        <cfheader name="content-disposition" value="attachment; filename=#config.temp_name#.#config.extension#" />
    </cfif>
    <cfcontent type="application/msexcel" variable="#spreadsheetReadBinary(local.xls)#" reset="true" />
    <cfcatch type="any">
        <cfdump var="#cfcatch#" output="console" />
    </cfcatch>
</cftry>

测试代码:

<cfset oSS = new SpreadsheetService() />

<cfquery name="testData" datasource="{your_dsn}">
    SELECT TOP 100 * FROM dbo.Some_Table ORDER BY id DESC
</cfquery>

<cfoutput>
    #oSS.createFromQuery(testData, false, "My Safe Excel File")#
</cfoutput>

关于excel - 下载excel表查询结果,无需写入文件coldfusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44763198/

相关文章:

vba - "While .. End While"在 VBA 中不起作用?

VBA Excel : do something every time a certain variable is changed

vba - 将 Excel 工作表、宏和图表从一个工作簿复制到另一个工作簿,并将链接移动到新工作簿

excel - 使用 VBA 将文本从网站提取到 Excel 中

coldfusion - 使用coldfusion发送/接收短信

java - 如何将图像放入excel java的单元格中?

cookies - Coldfusion StructDelete 创建空白值

java - 将二进制数据反序列化为对象时出现 StackOverflowError

javascript - 在页面加载时突出显示单选按钮

java - 使用 JRocket 追踪 ColdFusion 内存泄漏