2009-12-31 93 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並重新上傳。