我在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
我认为这是因为数据类型是数字并与%串联,这就是为什么它存储为文本的原因。
答案 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);
已更新:
但是现在当我尝试与其他单元格的其他值求和时,可以说 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);
答案 1 :(得分:0)
尝试:
SpreadsheetFormatCell(sheet,{dataformat =“ 0”},rowCounter,columnCounter)
Adobe Help docs for SpreadSheetFormatCell上有单个单元格可用格式设置的完整列表。