ColdFusion 9-Spreadsheetaddrows在列中删除部分值

ColdFusion 9-Spreadsheetaddrows在列中删除部分值,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,我正在使用CF电子表格函数从查询创建一个简单的电子表格。代码如下。我知道我们在一个古老的版本上。这不是我的电话。谢天谢地,几个月后我们终于可以升级了 在“OMS Num”列中,我们有一个始终为4个字符的字母数字值。其中一些是在添加到行时删除最后一个字符。该值本身一直到spreadsheetaddrows为止都是完整的。如果我把任何东西放在它的前面或后面,它工作得很好。我也尝试过电子表格格式专栏,但没有用 我尝试在最后一个字母前加上其他值,同样的事情也发生了。所以“12345D”变成了“13245

我正在使用CF电子表格函数从查询创建一个简单的电子表格。代码如下。我知道我们在一个古老的版本上。这不是我的电话。谢天谢地,几个月后我们终于可以升级了

在“OMS Num”列中,我们有一个始终为4个字符的字母数字值。其中一些是在添加到行时删除最后一个字符。该值本身一直到spreadsheetaddrows为止都是完整的。如果我把任何东西放在它的前面或后面,它工作得很好。我也尝试过电子表格格式专栏,但没有用

我尝试在最后一个字母前加上其他值,同样的事情也发生了。所以“12345D”变成了“13245”,“863D”变成了“863”。这里发生了什么以及如何补救的线索

数据:“OMS”字段 365A
UA66
UA74
705D-转换为705
592A
UK71
985A
216F-转换为216
940C
335F-转换为335
337F-转换为337

代码片段:

<Cfset qQuestionTypes = QueryNew("VERWMERKM,PLNNR_OMSSeqGrp,SourceType,OPS_ID,InputType,WorkCenter,OMS,OMS_ItemNbr,PartNbr,PartDesc,PartQty,HasInspectMethPic,QG_Group,ARBPL_WorkCenter","varchar, varchar,varchar,varchar, varchar,varchar, varchar,varchar,varchar, varchar,varchar, varchar,varchar,varchar")>

<cfset QueryAddRow(qQuestionTypes)>
<cfset QuerySetCell(qQuestionTypes,"VERWMERKM","A#numberformat(VERWMERKM,'0000000')#")>
<cfset QuerySetCell(qQuestionTypes,"PLNNR_OMSSeqGrp",PLNNR)>
<cfset QuerySetCell(qQuestionTypes,"SourceType",qQuestDetails.SourceType)>
<cfset QuerySetCell(qQuestionTypes,"OPS_ID",OPS_ID)>
<cfset QuerySetCell(qQuestionTypes,"inputtype",qQuestDetails.inputtype)>
<cfset QuerySetCell(qQuestionTypes,"WorkCenter",new_dummy10)>
<cfset QuerySetCell(qQuestionTypes,"OMS",TRIM(new_dummy20))>
<cfset QuerySetCell(qQuestionTypes,"OMS_ItemNbr",new_dummy40)>
<cfset QuerySetCell(qQuestionTypes,"PartNbr",qPartDetails.component_number)>
<cfset QuerySetCell(qQuestionTypes,"PartDesc",qPartDetails.Description)>
<cfset QuerySetCell(qQuestionTypes,"PartQty",qPartDetails.Qty)>
<cfset QuerySetCell(qQuestionTypes,"HasInspectMethPic",hasInspMeth)>
<cfset QuerySetCell(qQuestionTypes,"QG_Group",QualityGateRef)>
<cfset QuerySetCell(qQuestionTypes,"ARBPL_WorkCenter",ARBPL)>
<cfset QuerySetCell(qQuestionTypes,"SourceType",qQuestDetails.SourceType)>
<cfset sSpreadsheet = spreadsheetNew("QM3Details",TRUE)>
<cfset spreadsheetSetActiveSheet(sSpreadsheet,"QM3Details")>

<!--- Add header rows --->
<cfset spreadsheetAddRow(sspreadsheet, "SAP Question Nbr,OMS Seq Grp, Source Type, OPS_ID, Input Type, Work Center, OMS Num, OMS item, Part Number, Part Desc, Part Quantity, Has Insp Meth Pic,QG Group, ARBPL_Workcenter")>
<!--- Test of individual writes
<cfloop query="qQuestionTypes">
<cfset spreadsheetaddrow(sspreadSheet, '#qQuestionTypes.VERWMERKM#,#qQuestionTypes.PLNNR_OMSSeqGrp#,#qQuestionTypes.SourceType#,#qQuestionTypes.OPS_ID#,#qQuestionTypes.InputType#,#qQuestionTypes.WorkCenter#,#tostring(qQuestionTypes.OMS)#,#qQuestionTypes.OMS_ItemNbr#,#qQuestionTypes.PartNbr#,#qQuestionTypes.PartDesc#,#qQuestionTypes.PartQty#,#qQuestionTypes.HasInspectMethPic#,#qQuestionTypes.QG_Group#,#qQuestionTypes.ARBPL_WorkCenter#')>
</cfloop> --->
<cfset spreadsheetaddrows(sspreadSheet, qQuestionTypes,20,1,true)>
<!--- Write File --->
<cfset fileModDate=DateFormat(variables.dtCurrentDateTime, 'yyyymmdd_HHmmss')>
<cfset qm3filename="\somefolder\QM3_Details_#fileModDate#.xlsx">
<cfset spreadsheetWrite(sspreadsheet, qm3filename, true)>


如果问题在CF升级后没有消失,那么使用
数据类型
参数(在CF11之前不可用)强制列为字符串应该可以工作。同时,如果您临时硬编码一个字符串值,如
“1234A”
,以代替查询单元格中的
new\u dummy40
,您还会遇到问题吗?在升级之前,您是否可以将
预先添加到该值作为解决方法?例如
QuerySetCell(qQuestionTypes,“OMS_ItemNbr”,“new_dummy40”)
CF可能将“705D”和“335F”解析为数字,而不是字符串。i、 e.“D”=>
double
,和“F”=>
float
(数字类型),这就是尾随字母丢失的原因。不幸的是,早期的电子表格函数存在很多数据类型问题。出于这一点和安全原因,升级是最佳选择。如果您现在真的无法升级,您可以尝试一些变通方法,看看是否有适合您的方法。我没有CF9的副本来测试您的原始代码,但如果有其他人这样做,这里有一个简化的示例。。。我确实可以访问旧的CF9测试虚拟机,并且可以确认@SOS已就位。除了测试A-Z后缀外,我还尝试用一些二进制、十六进制和指数文字将其绊倒,例如
“0x1a”、“0b11”、“0xFF_EC_DE_5E”、“0b0010_0101”、“999_99_9991; l”、“1.234e2”、“1.234e2”、“12e2”、“12e2”
,其中
0x
0b
字符串保持不变,但
E
数字被解析为指数,在xlsx中,eg
12E2
被转换为
1200
。也许更令人惊讶的是,它在
1234L
中保留了
L
,而不是将其视为一个长字符。在保留所有字符串的单元格值前面加上一个“