在我的Grails应用中,我希望管理员用户能够上传包含以下数据的CSV文件:
我不知道用户将如何生成这些CSV文件 - 最有可能来自Excel,Access或类似文件,因此我无法知道哪个列将包含哪些数据。所以我打算允许用户指定哪个列包含用户,组等。
我想知道是否有一个JavaScript组件可以帮助解决这个问题。理想情况下,我想实现以下内容:
是否有客户端/服务器端组件可以提供帮助,或者是一种完全不同于上述方法的方法?
我应该强调的是,这个系统的用户在技术上不会有天赋,所以期望他们提供XML / JSON文件是不可能的(你肯定会忘记要求他们调用Web服务而不是上传文件)。
谢谢, 唐
答案 0 :(得分:1)
到目前为止,我喜欢您的解决方案,因为用户是非技术性的,并且您希望能够将此数据作为文件上传接受,而不是让用户将其直接输入您的应用程序。
我只是建议当用户上传文件时,服务器将前五行(或左右)作为HTML表返回给客户端。然后,您可以将<select>
下拉列表作为每列的标题,并使用您要查找的预设选项。您可以验证用户是否已为每个列分配了所有可用选项(使用JS从选择中删除选项,但确保提供撤消和更改选择的方法),并允许某些列不被标记(解析文件时服务器将忽略它。
如果可能的话,还可以说明(可能是图形格式或仅仅是一个例句,如果适用)他们的标签选择将如何应用于关系。例如,“新用户ABC将成为新组XYZ的成员”。如果ABC和XYZ意外向后,用户将认识到他们犯了错误。
此外,一些用户将不可避免地上传一个文件,他们使用行作为列和列作为行。提供一个GUI功能来反转它(“旋转”表格),或让他们选择要标记的轴。
我还建议为用户提供各种格式的示例文件集合(Excel,Access等),并为他们提供有关如何输入所需数据的明确说明,并逐步说明导出为CSV并上传。
答案 1 :(得分:0)
我不知道用户将如何生成这些CSV文件 - 最有可能来自Excel,Access或类似文件,因此我无法知道哪个列将包含哪些数据。
我应该强调,这个系统的用户在技术上不会有天赋
考虑到这两点,您确定CSV导入是处理批量用户创建的最佳方式吗?这是一个很好的技术解决方案,但问题是,您的用户是否能够利用它?
对于那些没有获得CSV或被Excel吓跑的人,可能值得实施替代批量创建选项。也许是一个JS网格,它具有必需的字段,可以手动输入每个字段的数据,并一次输入所需的数量,并附带一个链接,用于上传CSV文件作为使用它的人的选项。
对于CSV选项,由于您的用户不具备技术头脑,因此最好向他们提供有关如何创建指定订单字段的csv文件的说明。以及屏幕截图和示例文件
另一种选择是要求字段名称是文档的第一行,并要求它们使用字段的特定标签。如果你这样做,你可以从第一行算出数据的顺序。你也可以在第一行查找标题的检查,如果找不到它们,告诉用户他们需要将字段名称添加到CSV并重新上传。