使用csvToArray并使用coldfusion循环结果

时间:2014-11-20 11:54:34

标签: csv coldfusion

我正在使用我从Ben Nadel

获得的一些代码

我在一些代码中添加了使用我的.csv文件

<cffile action="READ" file="C:/ColdFusion10/cfusion/wwwroot/kelly2/debitorders.csv" variable="FileContent" result="csvfileupload">
<cfset CSVArray = FileContent>

<cfdump var="#CSVArray#">

<cfsavecontent variable="csv">
csvfileupload
</cfsavecontent>

<!--- Parse the test data. --->
<cfset result = csvToArray(
csv = trim( CSVArray )
) />

<!--- Output the results. --->
<cfdump
var="#result#"
label="Array 1"
/>

当我使用

时,我想循环查看结果
<cfloop array="#result#" index="i">
<cfoutput>#i#</cfoutput>
</cfloop>

我收到以下错误:

  

“无法将复杂对象类型转换为简单值。

     

表达式已请求变量或中间表达式   结果作为一个简单的价值。但是,结果无法转换为   简单的价值。简单的值是字符串,数字,布尔值和   日期/时间值。查询,数组和COM对象是其示例   复杂的价值观。“

我还想知道如何引用这些项目及其专栏,不确定我的术语是否有意义

我的最终目标是通过csv并逐行读取,根据行中的变量对数据进行排序,然后将其写入新的.txt文件。如果我走在正确的轨道上或者应该做些不同的事情,请告诉我。

2 个答案:

答案 0 :(得分:4)

csvToArray返回一个2D数组,可以在Ben的文章截图中清楚地看到,他的评论“我们要创建 一个数组数组,其中每个嵌套数组代表一个 CSV数据文件中的行。“

如果要访问每个单独的值,则需要内部循环。

<cfloop array="#result#" index="i">
    <cfloop array="#i#" index="j">
        <cfoutput>#j#</cfoutput>
    </cfloop>
</cfloop>

答案 1 :(得分:1)

嗯:i的价值是多少?你检查过了吗?如果你这样做,你没有这么说。

它很可能是一个结构或其他复杂的数据类型,不能简单地输出(这就是错误所说的)。

使用<cfdump>检查i的值,然后根据其中包含的内容进行处理。如果没有你提供这些信息,再说些什么是很棘手的。