下载excel工作表查询结果而不写入文件coldfusion

下载excel工作表查询结果而不写入文件coldfusion,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 /> <

我有一个简单的查询,我希望在不将文件写入磁盘的情况下,只需点击一个按钮即可将查询结果下载到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工作表中保留查询列大小写呢

我已经使用了这个片段的变体一段时间了:

<cfset sheet = SpreadSheetNew()>
<cfset SpreadsheetAddRow(sheet, "foo,bar")>

<!--- stream it to the browser --->
<cfheader name="Content-Disposition" value="inline; filename=foo.xls">
<cfcontent type="application/vnd.ms-excel" variable="#SpreadSheetReadBinary(sheet)#">
下面是一个将查询转换为excel文件的存根,而不是将其写入可通过web访问的文件夹

createFromQuery的主要功能有3个参数:

数据查询对象 xlsx布尔值、xls[false,default]或xlsx[true] 文件名字符串,如果为空,则使用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工作表将用于进一步处理,所以标题区分大小写。我知道queryName.getMetaData.getColumnLabels可以用来获取实际的列名,但是如何在excel工作表中使用它呢?用我目前掌握的更新问题。你的谷歌搜索字符串是ColdFusion电子表格函数。