2

我在cfspreadsheet(Coldfusion 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 

我认为这是因为数据类型是数字并与 % 连接,这就是它存储为文本的原因。

4

2 回答 2

2

正如Shawn 在评论中所说,如果查询值包含“%”(或附加一个),则它不是数字。这是一个字符串,这就是它没有按预期工作的原因。

-- 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);

可运行示例

于 2019-01-10T15:56:15.293 回答
0

尝试:

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

在 SpreadSheetFormatCell 的Adob​​e 帮助文档中有可用于单个单元格的格式选项的完整列表。

于 2019-01-08T14:11:36.343 回答