2009-01-21 115 views
4

對於Web應用程序的一部分,用戶需要從電子表格導入一些數據。如名稱和電子郵件地址列表。目前我們通過要求用戶瀏覽並上傳CSV文件來實現這一點。如何解析Excel中的「剪切n粘貼」

不幸的是,這並不總是可能的各種企業IT系統只允許用戶從文檔管理系統訪問文件和他們沒有任何特權,這些保存到本地驅動器或網絡共享。

我們有解決的辦法是允許用戶剪切和整個工作表(CSV)轉換爲文本區域粘貼並提交。在這樣做的時候,你會得到一個很好的製表符分隔列表,這些列表很容易被解析,如下所示。

Lorem ipsum dolor sit amet 
consectetur adipiscing elit Vivamus fermentum 
Vivamus et diam eu eros 
egestas rutrum Morbi id neque 
id enim molestie tincidunt Nullam 

不幸的是,各種細胞可能會產生意想不到的結果。在

bibendum ante molestie lectus Sed 
pret"ium "Susp endisse" "sollic 
itudin" nisi at 
urna Sed sit amet odio 
eu neque egestas tincidunt Nunc 
metus Curabitur at nibh Nulla 

在這種情況下,集下面你可以看到一個「字內prerium,字Suspendisse和單詞sollicitudin內換行一個標籤。我不能只在標籤和換行符分割無更多增強機制來處理實際數據中的製表符,引號和換行符

有沒有人知道任何可以可靠處理的代碼?或者即使可以依賴excel和剪貼板來產生一致性結果如何?

我在Asp.net 3.5使用C#的工作。 的用戶出類拔萃v ersion可能會有所不同,但應始終是Windows 2000/XP/Vista和IE 6/7。

回答

1

這看起來像一個「分隔值」名單給我,所以基本上相同,CSV與TAB作爲字段分隔符,換行符作爲行分隔符。你可以用CSV Reader library from CodeProject來試試,它應該是處理不同的分隔符,而不僅僅是逗號。

0

有用的東西我已經看到了粘貼CSV文件,一個解決方案,涉及從剪貼板中獲取數據的IDataObject的,然後使用讀取CSV每行成一個數據對象StreamReader與IDataObject.GetData(「csv」)

這可能會比將csv粘貼到文本框然後將其填充到另一個數據對象中更可靠。

對不起,我沒有示例代碼,我會嘗試編輯這個,當我得到一些時間,並嘗試一下。

0

通過快速檢查,可以創建包含選項卡(嘗試="abc"&CHAR(9)&"def"並將單元格複製到html文本區域)和一個或多個引號(例如="this has""one quote")的Excel單元格值。我無法看到任何完全萬無一失的方式來確定你所得到的。

的問題是,你沒有過的Excel之間的相互作用的任何真正的控制(如源),並在瀏覽器中的文本區域(如粘貼標的)。我甚至不確定在不同的瀏覽器中結果是否一定會相同!

我不知道是否有可能是管理通過可以協商與Excel更廣泛的交流剪貼板一些中間應用這更好這樣一個明確的格式可以被傳遞到瀏覽器的方法嗎?我知道,這不完全是無縫的用戶體驗,但是當您使用該技術時,您很快就會發現,應用程序間複製和粘貼確實是

鑑於格式不正確的數據應該是例外,我想我會繼續爲「正常」情況編寫解析器(您可以使用正則表達式或兩個正則表達式),並提供解析的數據返回給用戶進行確認,並能夠編輯未正確解析的行。有了一點Ajax魔法,我想你可以提供一些相當流暢的東西。

相關問題