如何修复在 cfspreadsheet 中存储为文本的数字
How to fix Number stored as text in cfspreadsheet
我正在 cfspreadsheet
(Coldfusion 10) 中制作 excel 单元格格式作为数字,但是当它转换为 excel 时,它会在 [=16] 单元格处显示警告=]
Number Stored as Text.
我能知道如何解决这个问题吗?因为我需要格式 number.Here 是我的代码:
<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
我认为这是因为数据类型是数字并与 % 连接,这就是它存储为文本的原因。
尝试:
SpreadsheetFormatCell(sheet, {dataformat="0"}, rowCounter, columnCounter)
上有可用于单个单元格的格式设置选项的完整列表
与 一样,如果查询值包含“%”(或附加一个),则它不是数字。这是一个 string,这就是它没有按预期工作的原因。
-- returns a string
SELECT numericColumnName ||'%' FROM tableName
相反,查询应该 return 原始数值:
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);
我正在 cfspreadsheet
(Coldfusion 10) 中制作 excel 单元格格式作为数字,但是当它转换为 excel 时,它会在 [=16] 单元格处显示警告=]
Number Stored as Text.
我能知道如何解决这个问题吗?因为我需要格式 number.Here 是我的代码:
<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
我认为这是因为数据类型是数字并与 % 连接,这就是它存储为文本的原因。
尝试:
SpreadsheetFormatCell(sheet, {dataformat="0"}, rowCounter, columnCounter)
上有可用于单个单元格的格式设置选项的完整列表与
-- returns a string
SELECT numericColumnName ||'%' FROM tableName
相反,查询应该 return 原始数值:
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);