如何修复在cfspreadsheet中存储为文本的数字

时间:2019-01-08 07:29:37

标签: coldfusion coldfusion-10 cfspreadsheet

我在cfspreadsheet(冷熔10)中将excel单元格格式设置为数字,但是当将其转换为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 :(得分:2)

Shawn said in the comments一样,如果查询值包含“%”(或附加一个),则它不是数字。这是一个 string ,这就是为什么它不能按预期工作的原因。

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

相反,查询应返回原始数值:

  SELECT  numericColumnName FROM tableName

然后使用{dataformat='0"%"'}格式化电子表格单元格。请注意嵌套的引号,以防止Excel将值乘以100使其成为百分比。

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

Runnable Example

已更新:

  

但是现在当我尝试与其他单元格的其他值求和时,可以说   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 Example

答案 1 :(得分:0)

尝试:

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

Adobe Help docs for SpreadSheetFormatCell上有单个单元格可用格式设置的完整列表。