Как показать полный номер в листе Excel?
Я экспортирую запрос в файл Excel, используя cfspeadsheet. Это работает и создает лист 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 ответа
Вам нужно определить и использовать формат для ячейки, чтобы показать полный номер. Ниже приведен пример кода для вашего кода:
<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>
Доступно много поддерживаемых форматов; полный список вы можете проверить здесь. Также, как и SpreadsheetFormatCell, вы можете использовать SpreadsheetFormatColumn или другие связанные функции.
(Слишком долго для комментариев...)
FWIW, CFSpreadsheet предназначен для очень простого экспорта, без большого количества наворотов. Если вам нужно специальное форматирование, вы должны использовать вместо этого функции электронных таблиц.
Наиболее близким эквивалентом вашего текущего кода является, вероятно , функция SpreadsheetAddRows(sheet, query). Он заполняет рабочий лист данными в предоставленном объекте запроса. Как упоминается в ответе Вив, вы можете отформатировать столбцы по своему усмотрению. Например, если вы хотите, чтобы значение обрабатывалось как текст, используйте {dataformat = "@"}
:
<cfscript>
SpreadsheetAddRows(theSheet, qData);
SpreadsheetFormatColumns(theSheet, {dataformat = "@"}, "1-3");
SpreadSheetWrite(theSheet, "c:/path/to/myFile.xls", true);
</cfscript>
Кроме того, примеры в документации не всегда самые лучшие или самые чистые. Считайте их отправной точкой, а не используйте код точно "как есть" .