我正在尝试使用<cfspreadsheet>
从电子表格中读取数据并将该数据插入数据库表中。我们说我的表有10个可能的列:FName,LName,MName, Address1,Address2,Address3,city,state,zip and email
。用户可以使用Excel提交数据,但他们不必为所有10列提交数据。他们只能提交FName,Email
或FName, LName, City, Email
的数据。我的电子表格代码应该只能读取其Excel文件中提交的列,而不是读取所有空白列。
我想通过使用&#34;列名和#34; <cfspreadsheet>
的属性我可以指示cfspreadsheet只读取这些列名中的数据,不幸的是我错了或者我做错了?
这是我的cfspreadsheet代码:
<cfspreadsheet action="read"
src="#Trim(PathToExcelFile)#"
columnnames="#Trim(Form.UserColumnList)#"
excludeheaderrow="true"
query="FindData">
</cfspreadsheet>
答案 0 :(得分:0)
user3779216写道: ...显然每个机构(其中有9个)都会有不同的excel布局。我可能能够为用户创建一个用户界面,将列表中的列名称映射到我的表格中的列名称,例如,从Excel中删除列名称,从表格中删除列名称,然后让用户选择来自excel的col与我的表中的col匹配。
实际上,这会让它变得简单。只需将有序的列列表提供给cfspreadsheet,就像您最初的方式一样,查询列名称将自动正确映射。
..并选择了此列顺序:
将该列表提供给cfspreadsheet会生成一个包含所需列映射的查询,您可以正常使用它。 (如果需要,添加代码以检测并跳过第一行中的可选标题名称。)
<cfspreadsheet action="read"
src="#variables.pathToFile#"
columnNames="#form.OrderedColumnNames#"
query="sheetData" />
<cfdump var="#variables.sheetData#">
NB:显然,真正的代码应该包括输入列表的验证。确保它包含所有必需的列,并且未被篡改以包含无效字符等。