如何在Excel工作表中显示完整数字?

时间:2016-08-22 23:57:16

标签: coldfusion cfspreadsheet

我使用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">

2 个答案:

答案 0 :(得分:1)

您需要定义并使用单元格格式来显示完整的数字。以下是代码的示例代码段:

<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或其他相关功能。

答案 1 :(得分:0)

(评论太长了......)

FWIW,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>

顺便说一下,文档中的示例并不总是最好或最干净的。将它们视为一个起点,而不是完全“按原样”使用代码。