У меня есть несколько процессов, которые используют тег CFSpreadsheet для импорта, а затем манипулировать данными Excel.Это прекрасно работает для файлов .XLS и .XLSX, однако не работает, если данные отправляются в виде файла .CSV, поскольку очевидно, что CFSpreadsheet никогда не обновлялся для импорта файлов .CSV.В конце дня я просто хочу простой препроцессор , который берет файл .CSV и перезаписывает его как файл .XLSX, чтобы мой другой процесс мог взять его оттуда.
Моя среда - это версия Coldfusion 2018 для разработчиков, и я попытался импортировать данные вручную (это может сработать, если я знаю все определения столбцов - но я не всегда буду знать это).Моя последняя попытка была с функцией 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">
Любые идеи приветствуются!