我不确定该项目从哪里开始。我知道如何读取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可以保存前往数据库的行程。
答案 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提交映射数组。您也可以搜索它,这是我找到的一篇文章: