我正在创建一个查询,然后将其下载到一个 Excel 文档中。我想在 excel 文档中包含一些链接,但不知道该怎么做。我尝试只在值中放置一个锚标记querySetCell()
,但这只是在 excel 文件中打印 html,html 没有被解析。我用的是CF10。以下是我的代码,不胜感激。
<cfset q = queryNew("#columnNames#")>
<cfset queryAddRow(q)>
<cfset querySetCell(q, "Attributes", "Part Number")>
<cfset querySetCell(q, "PrimaryPart", "#local.primaryPart.getProductNumber()#")>
<cfset i = 0>
<cfloop array="#local.comparableParts#" index="part">
<cfset i++>
<cfset querySetCell(q, "alternatePart"& i, "#part.getPartNumber()#")>
</cfloop>
<cfspreadsheet action="write" query="q" filename="partCompare.xls" overwrite="true" />
<!--- Make a spreadsheet object --->
<cfset s = spreadsheetNew()>
<!--- Add header row --->
<cfset spreadsheetAddRow(s, "#columnNames#")>
<!--- format header --->
<cfset spreadsheetFormatRow(s, {bold=true, fgcolor="lemon_chiffon"}, 1)>
<cfset spreadsheetAddRows(s, q)>
<cfheader name="content-disposition" value="attachment; filename=partCompare.xls">
<cfcontent type="application/msexcel" variable="#spreadsheetReadBinary(s)#" reset="true">
更新:我根据评论对我的代码进行了一些更改。链接现在确实显示在 excel 文档中,但“友好名称”显示为 0,直到我单击 excel 中的“启用编辑”按钮。如果从一开始就显示友好名称会很好,但如果不可能,或者取决于用户设置,这应该没问题。
<cfset partCompareQueryObj = queryNew("#columnNames#")>
<cfset queryAddRow(partCompareQueryObj)>
<cfset querySetCell(partCompareQueryObj, "Attributes", "Part Number")>
<cfset querySetCell(partCompareQueryObj, "PrimaryPart", "#local.primaryPart.getProductNumber()#")>
<cfset i = 0>
<cfloop array="#local.comparableParts#" index="part">
<cfset i++>
<cfset querySetCell(partCompareQueryObj, "alternatePart"& i, "#part.getPartNumber()#")>
</cfloop>
<cfspreadsheet action="write" query="partCompareQueryObj" filename="partCompare.xls" overwrite="true" />
<!--- Make a spreadsheet object --->
<cfset partCompareSpreadSheet = spreadsheetNew()>
<!--- Add header row --->
<cfset spreadsheetAddRow(partCompareSpreadSheet, "#columnNames#")>
<!--- format header --->
<cfset spreadsheetFormatRow(partCompareSpreadSheet, {bold=true, fgcolor="lemon_chiffon"}, 1)>
<cfset spreadsheetAddRows(partCompareSpreadSheet, partCompareQueryObj)>
<cfset SpreadsheetSetCellFormula(partCompareSpreadSheet, 'HYPERLINK("http://www.google.com","#local.primaryPart.getProductNumber()#")', 2, 2)>
<cfset i = 0>
<cfloop array="#local.comparableParts#" index="part">
<cfset i++>
<cfset SpreadsheetSetCellFormula(partCompareSpreadSheet, 'HYPERLINK("http://www.google.com","#local.primaryPart.getProductNumber()#")', 2, i+2)>
</cfloop>
<cfheader name="content-disposition" value="attachment; filename=partCompare.xls">
<cfcontent type="application/msexcel" variable="#spreadsheetReadBinary(partCompareSpreadSheet)#" reset="true">