将用户电子表格列映射到数据库字段

时间:2018-10-12 05:05:09

标签: coldfusion lucee coldfusion-2016 cfspreadsheet

我不确定该项目从哪里开始。我知道如何读取excel电子表格的内容,我知道如何识别标题行,我知道如何遍历内容。我相信我已经解决了UX部分,但不确定如何处理数据。

我在Google上搜索过,仅找到.Net解决方案,但我正在寻找ColdFusion / Lucee解决方案。

我有一个工作表格,允许我将用户的spreasheet列映射到我的数据库值(本文中这很简单;用户无法直接访问数据库)。

现在我有了数据,我不确定如何遍历数据结果。我相信会有几个循环(外部循环和内部循环)。然后当然,我还需要遍历文件内容,但是我想如果可以将标题映射出,就可以找出其余的内容。

任何好的链接,教程或指南,将不胜感激。

一些伪代码可能足以使我入门。

User uploads form  
System reads headers and content. 
User is presented form with a list of columns from their uploaded spreadsheet to match with available database fields (eg “column1” matches “customer name”. 
User submits form. 
Now what?

已更新 这是在我的表单中完成映射后的数据外观。列deliiter是:::,列中的|||表示与所选列值关联的ID。由于我计划再次显示该映射作为确认,因此我已经包含了id和column值。拥有ID可以保存前往数据库的行程。

Cary Swoveland's comment

1 个答案:

答案 0 :(得分:0)

如果我正确理解,您的问题是:how do you provide the user a form allowing them to map their spreadsheet columns to that of the database

由于您拥有其电子表格的列名,并且具有数据库的列名,因此此问题实质上是一个UI / UX问题。您需要显示两个列表,并允许用户映射它们。我可以想象几种解决方法。我首先想到的是某种拖放操作,如下所示:

创建一个框列表,每个框对应数据库表中的每个字段,并在框内(或上方)包含字段名称。我将其称为db field list。然后,为电子表格中的每一列创建另一个列表,我将其称为spreadsheet column list。用户可以将项目从spreadsheet column list拖放到db field list

当用户完成映射后,可以将列/字段名称存储为db field list框的DOM元素的数据。然后,提交后,您将通过访问每个框并将其添加到数组来获取映射数据。然后,您可以将该数组序列化为JSON,并将其发送到表单提交处理程序。

这可能很困难也很容易,这取决于您对使用JavaScript的UI实现的了解。 jQuery使这变得容易(如果您知道jQuery)。甚至还有一个jQuery UI插件可以执行此操作:https://jqueryui.com/droppable/

快速搜索javascript drag drop会有所帮助,这是我发现的几篇文章:

https://www.w3schools.com/html/html5_draganddrop.asp

https://medium.com/quick-code/simple-javascript-drag-drop-d044d8c5bed5

您还需要使用javascript提交映射数组。您也可以搜索它,这是我找到的一篇文章:

https://codereview.stackexchange.com/questions/94493/submit-an-array-as-an-html-form-value-using-javascript