我有一些使用 CFSpreadsheet 标签导入然后操作 Excel 数据的过程。这对 .XLS 和 .XLSX 文件非常有效,但是,如果数据作为 .CSV 文件发送,则它不起作用,因为 CFSpreadsheet 显然从未更新为导入 .CSV 文件。归根结底,我只想要一个简单的预处理器,它接受一个 .CSV 文件并将其重写为一个 .XLSX 文件,以便我的其他进程可以从那里获取它。
我的环境是 Coldfusion 2018 的开发人员版,我尝试手动导入数据(如果我知道所有列定义,这可以工作——但我并不总是知道这一点)。我最近的尝试是使用 Ben Nadel 的 CSVToArray 函数(https://www.bennadel.com/blog/2041-update-parsing-csv-data-files-in-coldfusion-with-csvtoarray.htm)——我可以轻松地将 .CSV 文件放入一个数组中——但我不知道如何从该数组转到一个查询之类的东西,我可以使用 CFSpreadsheet 编写一个电子表格。
这是一个示例:
<!--- This include is the function from Ben Nadel referenced above --->
<cfinclude template="Function_CSVtoArray.cfm">
<cfset result = csvToArray(file="TEST_File.csv") />
<cfdump var="#result#" label="TESTING">
<!--- *** The above WORKS up to this point ***--->
<!--- Create a new query. --->
<cfset qPartsTwo = QueryNew( "" ) />
<!--- Loop over keys in the struct. --->
<cfloop index="strKey" list="#StructKeyList(result)#" delimiters=",">
<!--- Add column to new query with default values. --->
<cfset QueryAddColumn(qPartsTwo,strKey,"VARCHAR",objParts[strKey]) />
</cfloop>
<!--- This code FAILS with a "You have attempted to dereference a scalar variable of type class coldfusion.runtime.Array as a structure with members" error message --->
我想结束这样的事情(尽管现在“结果”是某种数组而不是查询):
<cfspreadsheet action="write" filename="<my path>\TEST.xlsx" query="result">
任何想法,将不胜感激!