如何仅使用CFSpreadsheet

时间:2017-03-10 16:30:16

标签: coldfusion coldfusion-10 cfspreadsheet

我正在尝试使用<cfspreadsheet>从电子表格中读取数据并将该数据插入数据库表中。我们说我的表有10个可能的列:FName,LName,MName, Address1,Address2,Address3,city,state,zip and email。用户可以使用Excel提交数据,但他们不必为所有10列提交数据。他们只能提交FName,EmailFName, LName, City, Email的数据。我的电子表格代码应该只能读取其Excel文件中提交的列,而不是读取所有空白列。

我想通过使用&#34;列名和#34; <cfspreadsheet>的属性我可以指示cfspreadsheet只读取这些列名中的数据,不幸的是我错了或者我做错了?

Results of CFSpreadsheet Code

这是我的cfspreadsheet代码:

 <cfspreadsheet action="read" 
     src="#Trim(PathToExcelFile)#" 
     columnnames="#Trim(Form.UserColumnList)#" 
     excludeheaderrow="true" 
     query="FindData">
 </cfspreadsheet>

Mapping List and resulting Query

1 个答案:

答案 0 :(得分:0)

  

user3779216写道: ...显然每个机构(其中有9个)都会有不同的excel布局。我可能能够为用户创建一个用户界面,将列表中的列名称映射到我的表格中的列名称,例如,从Excel中删除列名称,从表格中删除列名称,然后让用户选择来自excel的col与我的表中的col匹配。

实际上,这会让它变得简单。只需将有序的列列表提供给cfspreadsheet,就像您最初的方式一样,查询列名称将自动正确映射。

例如,如果用户上传了以下布局: Uploaded File Layout

..并选择了此列顺序:

  • 邮编,地址1,LName的,FName参数,电子邮件,MNAME,地址2,城市,州

将该列表提供给cfspreadsheet会生成一个包含所需列映射的查询,您可以正常使用它。 (如果需要,添加代码以检测并跳过第一行中的可选标题名称。)

CFSpreadsheet query results

<cfspreadsheet action="read" 
     src="#variables.pathToFile#"
     columnNames="#form.OrderedColumnNames#"
     query="sheetData" />

<cfdump var="#variables.sheetData#">

NB:显然,真正的代码应该包括输入列表的验证。确保它包含所有必需的列,并且未被篡改以包含无效字符等。