2009-12-31 94 views
0

在我的Grails应用程序,我想管理员用户能够上传包含诸如数据的CSV文件:要添加到系统csv文件上传

  1. 用户列表组
  2. 名单要添加到系统
  3. 分配用户到组

我不知道用户将如何产生这些CSV文件 - 最有可能从Excel,Access或类似的,因此,我没有办法知道哪一列将包含哪些数据。所以我打算让用户指定哪个列包含用户,组等。

我想知道是否有JavaScript组件可以帮助解决这个问题。理想情况下,我想实现以下:

  • 用户上传文件
  • 在浏览器中,用户被示出上载的文件的第一N行和提示选择包含用户,组的列等
  • 列的信息上传到服务器

是否有一个客户端/服务器端组件,可以用这一点,或完全不同的方法这将是优于上述帮助吗?

我应该强调,这个系统的用户不会在技术上有天赋,所以期望他们提供XML/JSON文件是不可能的(而且你完全可以忘记要求他们调用Web服务上传文件)。

谢谢, 唐

回答

1

我喜欢到目前为止您的解决方案,因为用户都是非技术性,要能够接受这个数据作为文件上传,而不是让用户输入它直接进入你的应用程序。

我只是建议当用户上传文件时,服务器将前五(左右)行作为HTML表格返回给客户端。然后,您可以使用<select>下拉列表作为每列的标题,并带有您正在查找的预设选项。您可以验证用户已将所有可用选项分配给每列(使用JS从选择中删除选项,因为它们使用它们,但一定要提供撤消和更改选择的方法),并允许某些列不能标记(在解析文件时,服务器会忽略它)

如果可能的话,还可以说明(可能以图表格式或只是一个例句,如果适用)他们的标签选择如何应用于关系。例如, “如果ABC和XYZ意外退后,用户将认识到他们犯了一个错误。

另外,一些用户将不可避免地上传他们使用行作为列的文件,列作为行,或者提供一个GUI函数来反转这个行s(“旋转”表格),或让他们选择要标记的轴。

我还建议为用户提供各种格式的示例文件(Excel,Access等)的集合,并为他们提供有关如何输入他们想要的数据的明确说明,以及一步一步的指导将其导出为CSV和上传。

0

我不知道用户如何生成这些CSV文件 - 很可能来自Excel,Access或类似的,因此我无法知道哪列将包含哪些数据。

我要强调的是,该系统的用户不会在技术上有天赋

有了这两样东西记住,你确定CSV导入是处理大容量用户创造最好的方法是什么?这是一个很好的技术解决方案,但问题是,您的用户能够利用它吗?

对于那些没有获得CSV或被Excel吓跑的人来说,实施一个替代的批量创建选项可能是值得的。也许是一个JS网格,它具有必需的字段,可以手动输入每个字段的数据并一次输入尽可能多的数据,并且可以通过链接上传CSV文件作为可供使用的选项。

对于CSV选项,由于您的用户并不注重技术,因此最好向他们提供有关如何创建指定字段应该位于的顺序的CSV文件的说明。随着屏幕快照和示例文件。

另一种选择是要求字段名称是文档的第一行,并要求他们对字段使用特定的标签。如果你这样做了,你可以从第一行算出数据的顺序。你也可以在第一行找到标题的检查,如果找不到,告诉用户他们需要将字段名称添加到CSV并重新上传。