cfspreadsheet – 如何写excel而不显示列标题

我使用cfspreadsheet(在ColdFusion中)将查询结果写入Excel电子表格。 客户不希望excel表单上显示标题行。 excludeheaderrow属性仅用于阅读。 有谁知道是否有可能不写入标题行到电子表格?

谢谢!

spreadSheetAddRowsspreadSheetWrite将创build没有列标题的电子表格。

下面的代码片段将写入一个.xls文件,其中第1,2,3行的值为1,2,3。可以使用cfscript块中的最后3行代替: <cfspreadsheet action="write" query="qTest" filename="temp.xls"> 。 如果您的cfspreasheet标签中有其他属性,则需要其他属性和function。

 <cfscript> qTest = queryNew("Column1,Column2,Column3"); queryaddRow(qTest); querySetCell(qTest ,"Column1",1); querySetCell(qTest ,"Column2",2); querySetCell(qTest ,"Column3",3); spreadSheetObj= spreadsheetNew(false); //true for xlsx format spreadsheetAddRows(spreadSheetObj,qTest); spreadSheetWrite(spreadSheetObj,expandPath("./") &"temp.xls"); </cfscript> 

如果可以合理地假定要检索的列数是相当静态的,并且行可能增长/缩小,那么使用工作簿范围查询“命名范围”可能是最好的方法。

您没有提供样本数据,但是我们进一步假设数据块从A列到N列,并且虽然可能有一些空白字段,但列A始终具有数字性质的零件号/序列号/标识符。 数据驻留在名为Sheet2的工作表上。

转到公式►定义名称►名称pipe理器。 开始一个新的命名范围。 使用myData作为Name:,确保Scope:是Workbook ,而不是Worksheet,并使用以下内容来引用:

 =Sheet2!$A$2:INDEX(Sheet2!$N:$N, MATCH(1e99, Sheet2!$A:$A)) 

如果您select定义数据范围的列在本质上是字母(即文本),则该公式将会,

 =Sheet2!$A$2:INDEX(Sheet2!$N:$N, MATCH("zzz", Sheet2!$A:$A)) 

单击确定以创build新的命名范围,然后closures以closures名称pipe理器。 通过点击F5并在参考框中inputmyData并点击确定来testing您定义的数据范围。

如果一切按计划进行,则应select您的数据范围。 您应该能够查询,而不是单元格的工作表名称或工作表范围。

以下可能有助于devise您的查询: 在VBScript中的SQLstring中使用名为范围的Excel 。 search将产生许多其他资源。

将数据导出为直线HTML表格可能适合您。 不确定你在输出中究竟做了多less,但是这很简单。 像这样的东西:

 <Cfsavecontent name="myExcelFile"> <table> <cfoutput query="blah"> <tr border="1"> <td width="400">#col1#</td> <td><p>#col2#</p></td> <td>#col3#</td> </tr> </cfoutput> </table> </CFSAVECONTENT> <cfheader name="Content-Disposition" value="inline; filename=somefilename.xls"> <cfcontent type="application/vnd.ms-excel"><cfoutput>#myExcelFile#</cfoutput> 

请注意使用边框,宽度,P标签(用于指定文本)。 这可能需要一点实验,但这不是非常困难。