请问是否有一种标记可以添加到我的csv文件中的某个字段,使得Excel不会尝试将其转换为日期格式?
我正在尝试从我的应用程序写入一个.csv文件,其中一个值看起来非常像日期,因此Excel自动将它从文本转换为日期格式。我尝试将所有文本字段(包括看起来像日期的字段)放在双引号内,但这没有任何效果。
请问是否有一种标记可以添加到我的csv文件中的某个字段,使得Excel不会尝试将其转换为日期格式?
我正在尝试从我的应用程序写入一个.csv文件,其中一个值看起来非常像日期,因此Excel自动将它从文本转换为日期格式。我尝试将所有文本字段(包括看起来像日期的字段)放在双引号内,但这没有任何效果。
我发现在双引号前面加上'='可以实现你想要的效果。它会强制数据变成文本。
例如:="2008-10-03", ="更多文本"
编辑(根据其他帖子):由于Jeffiekins指出的Excel 2007错误,应该使用Andrew提出的解决方案:"=""2008-10-03"""
="xxx"
这样的不正规方法来解决问题,这应该不是解决方案。最多只能算是一个取巧,但微软应该努力改进他们的软件 :( - Andrew Newbycolumn_name
)。同样也起作用了。谢谢! - user651390'
,因为它是有点被理解且不太分散注意力的...但是一个看不见的字符会更好。 - Heath Raftery在Jarod的解决方案和Jeffiekins提出的问题的基础上,您可以进行修改。
"May 16, 2011"
到
"=""May 16, 2011"""
"
值,这个“修复”将会导致问题。 - Pacerier"806676","None","41","=""05-16-2011""","100.00","False"
,您会发现保存和重新加载会导致连字符文本丢失。 - NetMage我遇到了类似的问题,这是帮助我解决问题而不必编辑csv文件内容的解决方法:
如果您有灵活性来将文件命名为其他名称,而不是“.csv”,您可以使用“.txt”扩展名来命名它,例如“Myfile.txt”或“Myfile.csv.txt”。然后,当您在Excel中打开它(不是通过拖放,而是使用“文件”->“打开”或“最近使用的文件”列表),Excel会提供一个“文本导入向导”。
在向导的第一页中,选择“分隔符”作为文件类型。
在向导的第二页中,选择“,”作为分隔符,并选择文本限定符,如果您已经用引号将值括起来。
在向导的第三页中,逐个选择每列并将每列分配为“文本”类型,而不是“常规”类型,以防止Excel破坏您的数据。
希望这可以帮助您或其他遇到类似问题的人!
这是我使用的唯一正确的方法(而且无需修改CSV文件)。
Excel 2010:
Excel office365:(客户端版本)
注意:截至我撰写此文时,Excel office365(Web版本)无法执行此操作。
警告:Excel '07(至少)存在另一个错误:如果字段内容中有逗号,则无法正确解析 ="field,contents",而是将逗号后的所有内容放入以下字段,而不管引号。
我发现唯一可行的解决方法是在字段内容包括逗号时消除 =。
这可能意味着有些字段在Excel中无法准确地表示“正确”,但现在我相信没有人会感到太惊讶了。
field, content
中包含"
,这将无效。例如:"=""field, co""ntent"""
- Pacerier""""
。 - ErikE1"2
的字段,如果你选择使用这个技巧(而不是将其作为文本保留在文件中 - Excel已经将其视为文本),那么在指向Excel的CSV文件中,最终正确的字符串就是"=""1""""2"""
。 - Tao"=CONCATENATE(""1""""2"",""3"")"
来表示值1"23
。我似乎找不到一个可靠的方式来定位Excel,这是不可思议的。 - Tao在使用C#创建要写入CSV文件的字符串时,我必须以这种方式格式化:
"=\"" + myVariable + "\""
在Excel 2010中打开一个新的工作表。 在数据选项卡上点击“从文本获取外部数据”。 选择您的CSV文件,然后点击“打开”按钮。 点击“下一步”按钮。 取消勾选“制表符”,在“逗号”旁边打勾,然后点击“下一步”按钮。 单击第一列的任意位置。 同时按住Shift键并拖动滑块,直到您可以单击最后一列为止,然后松开Shift键。 单击“文本”单选按钮,然后单击“完成”按钮
所有列都将被导入为文本,就像它们在CSV文件中一样。
在Microsoft Office 2016版本中仍存在问题,对于我们这些处理基因名称(如MARC1、MARCH1、SEPT1等)的人而言,这相当令人不安。
我发现生成一个“.csv”文件,然后在Excel中打开/共享是最实用的解决方案:
HTH
以下是我们在生成csv文件时使用的简单方法,它会略微更改值,因此不适用于所有应用程序:
在csv中给所有值加上一个空格。
Excel将从数字(如“ 1”,“ 2.3”和“-2.9e4”)中去掉此空格,但对于日期(如“ 01/10/1993”)和布尔值(如“ TRUE”),则保留该空格,防止它们被转换为Excel的内部数据类型。
它还可以防止读取时双引号被删除,因此使csv中的文本始终不被Excel更改,即使存在“3.1415”之类的文本,也要用双引号括起来并在整个字符串前加上空格,例如(使用单引号表示您要输入的内容)' "3.1415"'。然后在Excel中,您始终拥有原始字符串,只不过它被双引号包围并在前面加上一个空格,因此需要在任何公式等中考虑这些内容。
"\xA0"
代替 - 这样就可以了。 - Doin