Как исправить число, хранящееся в виде текста в cfspreadsheet
Я делаю формат ячейки Excel в cfspreadsheet
(Coldfusion 10) как число, но когда он преобразуется, чтобы превзойти, он показывает предупреждение в ячейке, которая
Номер хранится как текст.
Могу ли я узнать, как это исправить? Потому что мне нужен формат как число. Вот мой код:
<cfscript>
theSheet = SpreadsheetNew("Order Details 1");
SpreadsheetAddRow(theSheet, "NO,VENDOR, PART NUMBER, PART NAME, PSI, LEAD TIME, ,N-5, N-4, N-3,N-2, N-1, N, N+1, N+2, N+3, N+4, PACKING MONTH, PRODUCTION MONTH ,MONTH,YEAR",5,1);
myFormat2=StructNew();
myFormat2.bold=false;
SpreadsheetFormatRow(theSheet,myFormat2,6);
SpreadsheetAddRows(theSheet,getROW);
SpreadsheetFormatColumn(theSheet,{dataformat="0"},5);
SpreadsheetFormatColumn(theSheet,{alignment="right"},5);
SpreadsheetFormatCellRange (theSheet,{font="Calibri"}, 7, 1, 2006, 17);
</cfscript>
Обновлено из комментариев:
Пример значения запроса 50
тип данных number
, Мой запрос выглядит следующим образом.
SELECT psi||'%' FROM vendor
Я думаю, это потому, что тип данных является числом и объединен с%, поэтому он хранится в виде текста.
2 ответа
Как сказал Шон в комментариях, если значение запроса включает "%" (или добавляет один), то это не число. Это строка, и поэтому она не работает, как ожидалось.
-- returns a string
SELECT numericColumnName ||'%' FROM tableName
Вместо этого запрос должен вернуть необработанное числовое значение:
SELECT numericColumnName FROM tableName
Затем отформатируйте ячейку электронной таблицы, используя {dataformat='0"%"'}
, Обратите внимание на вложенные кавычки, чтобы Excel не умножил значение на 100, чтобы сделать его процентным.
SpreadsheetFormatColumn(theSheet,{dataformat='0"%"'}, colNumber);
Обновлено:
Но теперь, когда я попытался суммировать с другим значением из другой ячейки, скажем, столбец E1=50%, столбец D1=8 получится 58 вместо 8,5
Ооо... это отличается от простого отображения 50 с "%". Похоже, вы действительно хотите, чтобы значение ячейки было 0.50
(не 50), но отображать его как 50%
, Чтобы сделать это, разделите значение на 100 в вашем запросе.
SELECT NumericColumnName / 100.0 AS NumericColumnName FROM tableName
Затем отформатируйте ячейку электронной таблицы как "0%"
SpreadsheetFormatColumn(theSheet,{dataformat="0%"}, colNumber);
Пытаться:
SpreadsheetFormatCell (sheet, {dataformat = "0"}, rowCounter, columnCounter)
Полный список параметров форматирования, доступных для отдельных ячеек, в справочных документах Adobe для SpreadSheetFormatCell.