如何知道Excel复制到剪贴板的数据的.csv字段分隔符

问题描述

如何知道Excel复制到剪贴板的数据的.csv字段分隔符?

有没有办法知道导出应该使用的标准字段分隔符是什么? 请注意,就像我(加拿大-法语)一样,双值分隔符是逗号“,”,字段分隔符似乎是分号“;”。

那么如何知道 Excel 将使用什么字段分隔符将其数据导出到剪贴板?

解决方法

默认是选项卡。如果您从 Excel 复制数据并将其粘贴到文本编辑器中,则会将单元格分隔开。

,

如果您右键单击您的 excel/csv 文件并使用记事本打开,您将看到您的配置中设置的分隔符类型。

,

保存到磁盘的 csv 文件没有任何元数据存储,因此您没有一种万无一失的方法来确定 csv 文件是否由逗号、分号、管道、单词“东西”,或任何其他字符。

a standard for how csv files are created,但是,呃,好吧,你知道这是怎么回事......

Microsoft decides to do their own thing,根据“区域和语言选项”更改字符。如果您的程序与制作该文件的 Excel 应用程序在同一台机器上运行,您可能能够以编程方式确定这一点。

我想推断分隔符的最佳选择是查看第一行 - 标题。希望您的标题字段中没有逗号,并且您可以拥有预期分隔字符的白名单。当您查看该标题行时,如果您看到一个逗号,您就知道整个文件是由逗号分隔的,或者如果您看到一个分号,则使用分号分隔。

当然,这并不完美。如果您可以控制使 Excel 始终使用相同的分隔符打印 csv,那总是更好的解决方案。或者,在导入文件时,询问用户文件的格式(逗号 csv 与分号 csv 等)。

,

经过一些调查,我认为没有办法确定 Excel 将在剪贴板中用作“CSV”格式的字段分隔符。另外,如果有办法,那就取决于电脑上excel的版本(如果只有一个),也只能是用户。

我的需要是确保从 excel 粘贴的一致方式,并决定使用“文本”格式而不是“CSV”格式。只是为了确保每个人都理解我的意思:当您在 Excel 中“剪切”或“复制”时,会将数据放入剪贴板的格式(类型)有多种。

要了解可用的格式:

    IDataObject dataObj = System.Windows.Clipboard.GetDataObject();

    if (dataObj != null)
    {
        string[] formats = dataObj.GetFormats();

使用“文本”格式(formats.Contains(DataFormats.Text))确保使用制表符(“\t”)字段分隔符和回车+换行符(“\r\n”)作为行分隔符。格式是固定的,永远不会改变。它一直是一致的。

感谢所有给出答案的人。它们都很好,但我想添加一些额外的信息。