我正在 cfspreadsheet
(Coldfusion 10) 中制作 Excel 单元格格式作为数字,但是当它转换为 Excel 时,它会在单元格中显示警告
Number Stored as Text.
我可以知道如何解决这个问题吗?因为我需要数字格式。这是我的代码:
<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
我认为这是因为数据类型是数字并与 % 连接,这就是它存储为文本的原因。
最佳答案
如Shawn said in the comments ,如果查询值包含“%”(或附加一个),则它不是数字。它是一个字符串,这就是它无法按预期工作的原因。
-- returns a string
SELECT numericColumnName ||'%' FROM tableName
相反,查询应返回原始数值:
SELECT numericColumnName FROM tableName
然后使用 {dataformat='0"%"'}
设置电子表格单元格的格式。请注意嵌套引号,以防止 Excel 将值乘以 100 以使其成为百分比。
SpreadsheetFormatColumn(theSheet,{dataformat='0"%"'}, colNumber);
更新:
But now when I tried to sum with other value from other cell lets say column E1=50% , column D1=8 it will come to 58 instead of 8.5
哦...这与仅用“%”显示 50 不同。听起来您确实希望单元格值为 0.50
(而不是 50),但将其显示为 50%
。为此,请将查询中的值除以 100。
SELECT NumericColumnName / 100.0 AS NumericColumnName FROM tableName
然后将电子表格单元格格式设置为“0%”
SpreadsheetFormatColumn(theSheet,{dataformat="0%"}, colNumber);
关于coldfusion - 如何修复 cfspreadsheet 中存储为文本的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54087074/