我正在从我们的客户那里接收 excel 文件,我需要从它们中创建一个 csv 文件。我的问题是 excel 文件中的值不符合我们仅通过复制来创建 csv 文件的标准。在创建文件时,我需要获取这些值并将它们按正确的顺序排列。我通读了 CF 的 livedocs,但找不到任何有用的东西。
我正在考虑创建一个结构并将数据拉出其中,然后根据我的结构创建 csv 文件,但我之前没有做过类似的事情,我不确定它是否可能。我也想过用 listGetAt 代替 struct 但还没有尝试过。
以前有人做过这样的事情吗?我正在尝试对尽可能少的值进行硬编码,因为如果我们有第二个客户遇到同样的问题,我认为这将成为未来的问题。
更新(过去几天我更改了很多代码,所以这就是我目前所拥有的)
<cfset DataDirectory = "E:\testfolder\test.xlsx">
<cfspreadsheet action="read" src="#DataDirectory#" excludeHeaderRow="true" headerrow="1" query="queryData">
<cfquery name="contact" datasource="#ds#">
select ClientBrandID
from ClientBrands
where surveyReferralID IN
(select surveyReferralID from clientAdmin where username = '#res#')
</cfquery>
<cfscript>
dataFile = structNew();
StructInsert(datafile,"ClientBrandID",contact.ClientBrandID);
StructInsert(datafile,"surveyType", queryData.surveyType);
</cfscript>
<cfscript>
///We need an absolute path, so get the current directory path.
theFile= "E:\testfolder\NewTest.csv";
//Create a new Excel spreadsheet object and add the query data.
theSheet = SpreadsheetNew("PatientData");
SpreadsheetAddRow(theSheet, "ClientBrandID,SurveyType,Location,ClientContactID,FirstName,LastName,HomePhone,WorkPhone,CellPhone,Email"); <!---This is the header of the new CSV --->
SpreadsheetAddRows(theSheet, "datafile.clientbrandid, datafile.surveytype"); <!--- This is my latest failed attempt. Tried to pass in data from my struct, probably the quotes are the issue but haven't tried it without them --->
</cfscript>
<!--- Write the spreadsheet to a file, replacing any existing file. --->
<cfspreadsheet action="write" filename="#theFile#" format="csv" name="theSheet" overwrite=true >
所有这些操作都需要在 cfloop 中才能遍历我的测试文件夹中的所有文件。现在我正在硬编码一个文件来解决手头的问题,然后再做任何其他事情。另外,我错过了另一个循环,它需要遍历文件的所有值。它应该类似于<cfloop query='queryData'>
我从 cfspreadsheet 获得的查询。