我正在使用cfspeadsheet将查询导出到Excel文件。它正在工作并创建Excel工作表。然而,问题是其中一列,即card_number,包含一个15位数字,它显示如下:4.5421E+15。有没有一种方法可以显示完整的数字:4254218068670980?
<!--- create manual query for demo --->
<cfset qData = queryNew("")>
<cfset queryAddColumn(qData, "NumericCol", "BigInt",["4254218068670980"])>
<cfset queryAddColumn(qData, "StringCol", "Varchar",["4254218068670980"])>
<cfset queryAddColumn(qData, "DecimalCol", "Decimal",["4254218068670980"])>
<!--- export to file --->
<cfspreadsheet action="write"
filename="c:/path/to/myFile.xls"
query="qData"
overwrite="true">发布于 2016-08-23 10:01:58
您需要为单元格定义并使用一种格式来显示完整的数字。下面是您的代码的示例代码片段:
<cfscript>
theFile=GetDirectoryFromPath(GetCurrentTemplatePath()) & "new_data.xls";
//Create a new Excel spreadsheet object.
theSheet = SpreadsheetNew("Expenses");
//Set the value a cell.
SpreadsheetSetCellValue(theSheet,"4254218068670980",1,4);
//Set value into another cell.
SpreadsheetSetCellValue(theSheet,"4254218068670980",2,4);
// Define a format class for for number.
longNum=StructNew();
longNum.dataformat = "0";
//Now use this class to format cell
SpreadsheetFormatCell(theSheet,longNum,2,4);
</cfscript>有许多支持的格式可用;要获得完整的列表,您可以查看here。此外,就像SpreadsheetFormatCell一样,您可能想要使用SpreadsheetFormatColumn或其他相关函数。
发布于 2016-09-01 09:09:23
(评论太长...)
CFSpreadsheet是为非常简单的导出而设计的,没有太多的花哨。如果需要特殊格式,则必须使用电子表格函数。
与当前代码最接近的等价物可能是SpreadsheetAddRows(sheet, query)函数。它使用提供的查询对象中的数据填充工作表。正如Viv's answer提到的,您可以根据需要设置列的格式。例如,如果希望将该值视为文本,请使用{dataformat = "@"}
<cfscript>
SpreadsheetAddRows(theSheet, qData);
SpreadsheetFormatColumns(theSheet, {dataformat = "@"}, "1-3");
SpreadSheetWrite(theSheet, "c:/path/to/myFile.xls", true);
</cfscript>顺便说一句,文档中的示例并不总是最好或最干净的。把它们当作一个起点,而不是完全“按原样”使用代码。
https://stackoverflow.com/questions/39090400
复制相似问题