如何在 Excel sheet 中显示完整数字?
How to show full number in Excel sheet?
我正在使用 cfspeadsheet 将查询导出到 Excel 文件。它正在运行并创建 Excel sheet。然而,问题在于其中一列,即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">
您需要为单元格定义和使用一种格式来显示完整的数字。以下是您的代码的示例代码片段:
<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 you may want to use SpreadsheetFormatColumn 或其他相关函数一样。
(评论太长了...)
FWIW,CFSpreadsheet 专为非常简单的导出而设计,没有太多花里胡哨的东西。如果您需要特殊格式,则必须改用电子表格函数。
最接近您当前代码的可能是 SpreadsheetAddRows(sheet, query) function. It populates a worksheet with the data in the supplied query object. As 提及,然后您可以根据需要格式化列。例如,如果您希望值被视为文本,请使用 {dataformat = "@"}
:
<cfscript>
SpreadsheetAddRows(theSheet, qData);
SpreadsheetFormatColumns(theSheet, {dataformat = "@"}, "1-3");
SpreadSheetWrite(theSheet, "c:/path/to/myFile.xls", true);
</cfscript>
顺便说一句,文档中的示例并不总是最好或最干净的。将它们视为起点,而不是完全使用代码 "as is" ..
我正在使用 cfspeadsheet 将查询导出到 Excel 文件。它正在运行并创建 Excel sheet。然而,问题在于其中一列,即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">
您需要为单元格定义和使用一种格式来显示完整的数字。以下是您的代码的示例代码片段:
<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 you may want to use SpreadsheetFormatColumn 或其他相关函数一样。
(评论太长了...)
FWIW,CFSpreadsheet 专为非常简单的导出而设计,没有太多花里胡哨的东西。如果您需要特殊格式,则必须改用电子表格函数。
最接近您当前代码的可能是 SpreadsheetAddRows(sheet, query) function. It populates a worksheet with the data in the supplied query object. As {dataformat = "@"}
:
<cfscript>
SpreadsheetAddRows(theSheet, qData);
SpreadsheetFormatColumns(theSheet, {dataformat = "@"}, "1-3");
SpreadSheetWrite(theSheet, "c:/path/to/myFile.xls", true);
</cfscript>
顺便说一句,文档中的示例并不总是最好或最干净的。将它们视为起点,而不是完全使用代码 "as is" ..