Как исправить число, хранящееся в виде текста в cfspreadsheet - PullRequest
0 голосов
/ 08 января 2019

Я делаю формат ячейки Excel в cfspreadsheet (Coldfusion 10) в виде числа, но когда он преобразуется в Excel, он показывает предупреждение в ячейке, которая

Число, сохраняемое как текст.

Могу ли я узнать, как это исправить? Потому что мне нужен формат как числа. Вот мой код:

<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 ]

0 голосов
/ 10 января 2019

Как сказал Шон в комментариях , если значение запроса включает «%» (или добавляет один), то это не число. Это строка , и поэтому она не работает должным образом.

-- returns a string
SELECT  numericColumnName ||'%' FROM tableName

Вместо этого запрос должен возвращать необработанное числовое значение:

  SELECT  numericColumnName FROM tableName

Затем отформатируйте ячейку электронной таблицы, используя {dataformat='0"%"'}. Обратите внимание на вложенные кавычки, чтобы Excel не умножал значение на 100, чтобы сделать его процентом.

SpreadsheetFormatColumn(theSheet,{dataformat='0"%"'}, colNumber);

Пример выполнения

Обновлено:

Но теперь, когда я попытался суммировать с другим значением из другой ячейки, скажем столбец E1 = 50%, столбец D1 = 8, вместо 8,5

он составит 58

Ооо ... это отличается от простого отображения 50 с "%". Звучит так, будто вы действительно хотите, чтобы значение ячейки было 0.50 (не 50), но отображаете его как 50%. Чтобы сделать это, разделите значение на 100 в вашем запросе.

 SELECT NumericColumnName / 100.0 AS NumericColumnName FROM tableName

Затем отформатируйте ячейку таблицы как "0%"

 SpreadsheetFormatColumn(theSheet,{dataformat="0%"}, colNumber);

Пример выполнения

0 голосов
/ 08 января 2019

Попробуйте:

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

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

...