我正在尝试使用<cfspreadsheet>从电子表格中读取数据,并将该数据插入到数据库表中。假设我的表有10个可能的列:FName,LName,MName, Address1,Address2,Address3,city,state,zip and email。用户可以使用Excel提交数据,但他们不必提交所有10列的数据。他们可以只为FName,Email或FName, LName, City, Email提交数据。我的电子表格代码应该能够只读取在Excel文件中提交的列,而不是读取所有空白列。
我想通过使用<cfspreadsheet>的"columnnames“属性,我可以指示cfspreadsheet从这些列名中读取数据,不幸的是,我错了,或者我做错了?

下面是我的cfspreadsheet代码:
<cfspreadsheet action="read"
src="#Trim(PathToExcelFile)#"
columnnames="#Trim(Form.UserColumnList)#"
excludeheaderrow="true"
query="FindData">
</cfspreadsheet>

发布于 2017-03-15 22:52:37
user3779216写道: ...显然,每个机构(共有9家)将有不同的excel布局。我也许能够为用户创建一个UI来将他们excel中的列名称映射到我的表中的列名称,例如,从excel中的列名下拉列表和我的表中的列名下拉列表,并让用户选择excel中的哪一列与我的表中的哪一列相匹配。
实际上,这会让它变得非常简单。只需将列的有序列表提供给cfspreadsheet,就像您最初所做的那样,查询列名将自动正确映射。
例如,如果用户上传了以下布局:

。。并选择此列顺序:
将该列表提供给cfspreadsheet将生成一个具有所需列映射的查询,您可以像往常一样使用它。(如果需要,添加代码以检测和跳过第一行中的可选标题名称。)

<cfspreadsheet action="read"
src="#variables.pathToFile#"
columnNames="#form.OrderedColumnNames#"
query="sheetData" />
<cfdump var="#variables.sheetData#">NB:显然,真正的代码应该包括输入列表的验证。确保它包含所有必需的列,并且未被篡改以包含无效字符等。
https://stackoverflow.com/questions/42723230
复制相似问题