0

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

我用谷歌搜索,只找到了 .Net 解决方案,但我正在寻找 ColdFusion/Lucee 解决方案。

我有一个工作表单,允许我将用户的电子表格列映射到我的数据库值(对于这篇文章来说,这很简单;用户没有直接访问数据库的权限)。

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

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

一些伪代码可能足以让我开始。

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?

更新 这是在我的表单中完成映射后数据的样子。列分隔符是 ::: 并且在列内是 ||| 表示与所选列值关联的 ID。我已经包含了 id 和列值,因为我计划再次显示映射作为确认。拥有 ID 可以节省访问数据库的时间。

用户执行映射后表单提交的转储

4

1 回答 1

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 listdb 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

于 2018-10-12T17:14:33.167 回答