如何parsingExcel中的“剪切n粘贴”

对于Web应用程序的一部分,用户需要从电子表格导入一些数据。 如名单和电子邮件地址列表。 目前我们要求用户浏览并上传CSV文件。

不幸的是,这并不总是可能的,因为各种企业IT系统只允许用户从文件pipe理系统访问文件,并且他们没有权限将这些文件保存到本地驱动器或networking共享中。

我们的解决scheme是允许用户剪切和粘贴整个工作表(CSV)到文本区域并提交。 在这样做,你会得到一个很好的制表符分隔列表的数据,很容易parsing如下。

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 

不幸的是,各种细胞可能会产生意想不到的结 在下面的集合中,您可以看到“Prerium”一词中的单词“Suspendisse”和“sollicitudin”中的换行符。

 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 

在这种情况下,我不能只分割制表符和换行符,而没有更多的增强机制来处理实际数据中的制表符,引号和换行符。

有谁知道任何可以处理这个可靠的代码? 或者,即使excel和这样的剪贴板可以依靠产生一致的结果?

我正在使用C#在Asp.net 3.5中工作。 用户excel版本可能会有所不同,但应始终是Windows 2000 / XP / Vista和IE 6/7。

这看起来像一个“分隔值”列表给我,所以基本上相同的CSV与TAB作为字段分隔符和换行符作为行分隔符。 你可以使用CodeProject的CSV Reader库来尝试它,它应该处理不同的分隔符,而不仅仅是逗号。

尝试在System.Windows.Forms.Clipboard成员中find有用的东西

我已经看到了一个粘贴csv文件的解决scheme,涉及从IDataObject中的剪贴板获取数据,然后使用带有IDataObject.GetData(“csv”)的StreamReader将csv的每一行读入数据对象

这可能比将csv粘贴到文本框然后将其填充到另一个数据对象更可靠。

对不起,我没有示例代码,我会尝试编辑这个,当我得到一些时间,并尝试一下。

从快速检查,可以创build一个Excel单元格值,其中包含一个选项卡(尝试="abc"&CHAR(9)&"def"和单元格复制到HTML文本区域)和一个或多个引号(例如="this has""one quote" )。 我不能看到任何完全万无一失的方式来确定你所得到的。

问题在于,你不能真正控制Excel(作为源代码)和浏览器中的文本区域(作为粘贴目标)之间的交互。 我甚至不确定在不同的浏览器中,结果是否会一样。

我想知道是否有办法通过一些中间应用程序来更好地pipe理这个问题,这个应用程序可以和Excel进行更广泛的剪贴板交换,这样可以将明确的格式传递给浏览器。 我知道,不完全是一个无缝的用户体验,但是当你使用这个技术的时候,你很快就会发现应用程序间的复制粘贴真的很难

鉴于格式不正确的数据应该是个例外,我想我会继续为“正常”情况编写一个parsing器(可以用正则expression式或两个正则expression式),并将parsing的数据提交给用户用于确认,可以编辑未正确parsing的行。 有了一点阿贾克斯的魔力,我想你可以提供一些相当漂亮的东西。

您可以使用Microsoft已经提供的TextFieldParser类: http : //msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio(v=vs.110).aspx