Как исправить число, хранящееся в виде текста в 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);

Runnable Пример

Обновлено:

Но теперь, когда я попытался суммировать с другим значением из другой ячейки, скажем, столбец 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);

Runnable Пример

Пытаться:

SpreadsheetFormatCell (sheet, {dataformat = "0"}, rowCounter, columnCounter)

Полный список параметров форматирования, доступных для отдельных ячеек, в справочных документах Adobe для SpreadSheetFormatCell.

Другие вопросы по тегам