有没有人碰巧知道是否有一个令牌我可以添加到我的csv某个字段,所以Excel不会尝试将其转换为日期?
我正在尝试从我的应用程序中编写.csv文件,其中一个值看起来就像Excel自动将其从文本转换为日期的日期.我已经尝试将所有文本字段(包括看起来像日期的字段)放在双引号内,但这没有任何效果.
Jar*_*ott 349
我发现在双引号之前加上'='可以实现你想要的.它强制数据为文本.
例如.="2008-10-03",="更多文字"
编辑(根据其他帖子):由于Jeffiekins提到的Excel 2007错误,应该使用Andrew提出的解决方案:"=""2008-10-03"""
fr1*_*13d 143
我知道这是一个老问题,但问题不会很快消失.CSV文件很容易从大多数编程语言中生成,相当小,人们可以在简单的文本编辑器中使用,并且无处不在.
问题不仅在于文本字段中的日期,而且任何数字也会从文本转换为数字.这是一个有问题的例子:
有时可以从一个或多个零(0)开始,这些零在转换为数字时会被丢弃.或者该值包含可能与数学运算符混淆的字符(如日期:/, - ).
两种情况下,我能想到的是,"预谋="解决方案,如前面提到的,可能不是理想的是
如果在值中预先/附加非数字和/或非日期字符,则该值将被识别为文本而不进行转换.非打印字符会很好,因为它不会改变显示的值.但是,普通旧空格字符(\ s,ASCII 32)对此不起作用,因为它被Excel切掉,然后值仍然被转换.但是有各种其他打印和非打印空间字符可以很好地工作.最简单的方法是在简单的制表符(\ t,\ t\t,ASCII 9)后附加(添加).
这种方法的好处:
如果您不想使用该选项卡,请在Unicode表中查找其他合适的选项.
可能是生成XML文件,其中某些格式也被新的MS Excel版本接受导入,并且允许更多类似于.XLS格式的选项,但我没有这方面的经验.
所以有各种选择.根据您的要求/应用,一个可能比另一个更好.
需要说明的是,MS Excel的新版本(2013+)不再以电子表格格式打开CSV - 在一个工作流程中再增加一个速度,使得Excel不那么有用......至少,存在绕过它的说明.请参阅此Stackoverflow:如何在Excel 2013中正确显示.csv文件? .
And*_*erk 101
根据Jarod的解决方案以及Jeffiekins提出的问题,你可以修改
"May 16, 2011"
Run Code Online (Sandbox Code Playgroud)
至
"=""May 16, 2011"""
Run Code Online (Sandbox Code Playgroud)
rai*_*bit 63
我遇到了类似的问题,这是帮助我而不必编辑csv文件内容的解决方法:
如果您可以灵活地将文件命名为".csv"以外的其他名称,则可以使用".txt"扩展名来命名,例如"Myfile.txt"或"Myfile.csv.txt".然后当您在Excel中打开它(而不是通过拖放,但使用文件 - >打开或最近使用的文件列表),Excel将为您提供"文本导入向导".
在向导的第一页中,为文件类型选择"Delimited".
在向导的第二页中,选择","作为分隔符,如果已用引号括起值,也可以选择文本限定符
在第三页中,分别选择每一列,并为每个列分配"文本"而不是"常规",以防止Excel弄乱您的数据.
希望这可以帮助您或有类似问题的人!
Jef*_*ins 27
警告:Excel '07(至少)有一个(另一个)错误:如果字段内容中有逗号,它不会正确解析="字段,内容",而是将逗号后的所有内容放入以下字段,不管引号如何.
我发现唯一的解决方法是在字段内容包含逗号时消除=.
这可能意味着有些字段无法在Excel中完全"正确"表示,但到目前为止,我相信没有人会感到惊讶.
Col*_*ear 20
在C#中创建要写入我的CSV文件的字符串时,我必须以这种方式格式化:
"=\"" + myVariable + "\""
Run Code Online (Sandbox Code Playgroud)
小智 15
在Excel 2010中打开一个新工作表.在"数据"功能区上,单击"从文本获取外部数据".选择您的CSV文件,然后单击"打开".点击下一步".取消选中"Tab",在"逗号"旁边放置一个复选标记,然后单击"下一步".单击第一列的任意位置.按住shift键的同时拖动滑块直到您可以单击最后一列,然后释放shift键.单击"文本"单选按钮,然后单击"完成"
所有列都将作为文本导入,就像它们在CSV文件中一样.
Ana*_*ira 12
在Microsoft Office 2016版本中仍然是一个问题,对于我们这些使用基因名称的人来说相当令人不安,例如MARC1,MARCH1,SEPT1等.我发现在R中生成".csv"文件后最实用的解决方案,然后将与Excel用户打开/共享:
HTH
evi*_*iko 12
2018年
唯一适用于我的解决方案(也无需修改CSV)。
Excel 2010:
Excel office365 :(客户端版本)
注意:在撰写本文时,Excel office365(网络版)将无法执行此操作。
Dan*_*Dan 10
这是我们在首先生成csv文件时使用的简单方法,它确实更改了一些值,因此它不适合所有应用程序:
在csv中为所有值预先添加空格
这个空间将被excel从诸如"1","2.3"和"-2.9e4"之类的数字中剥离,但将保留在"01/10/1993"之类的日期和"TRUE"之类的布尔值,阻止它们被转换为excel的内部数据类型.
它还会在读入时停止双引号,因此在csv中制作文本的万无一失的方法仍然保持不变,即使是"3.1415"之类的文本是用双引号括起来并在整个字符串前加一个空格,即(使用单引号显示您要键入的内容)'"3.1415"'.然后在excel中你总是有原始的字符串,除了它被双引号括起来并以空格为前缀,所以你需要考虑任何公式中的那些.
(假设Excel 2003 ...)
使用"文本到列"向导时,在步骤3中,您可以指定每个列的数据类型.单击预览中的列,将行为不当列从"常规"更改为"文本".
这是我知道如何在不弄乱文件内部的情况下实现此目的的唯一方法.像往常一样,我通过在桌面上敲打几个小时来学习这一点.
将.csv文件扩展名更改为.txt; 这将阻止Excel在文件打开时自动转换文件.我是这样做的:打开Excel到空白工作表,关闭空白工作表,然后File => Open并选择扩展名为.txt的文件.这会强制Excel打开"文本导入向导",它会询问您有关如何解释文件的问题.首先,您选择分隔符(逗号,制表符等),然后(这是重要的部分)您选择一组列并选择格式.如果你想要文件中的确切内容然后选择"文本",Excel将显示分隔符之间的内容.
(EXCEL 2007 及更高版本)
任何一个:
Data > Get external data > From Text 无论哪种方式,您都会看到导入选项,只需选择包含日期的每一列并告诉 Excel 将格式设置为“文本”而不是“常规”。
我为同样的问题所做的是在每个 csv 值之前添加以下内容:“=”,并在每个 CSV 值之后添加一个双引号,然后在 Excel 中打开文件。以下列值为例:
012345,00198475
Run Code Online (Sandbox Code Playgroud)
这些应该在 Excel 中打开之前更改为:
"="""012345","="""00198475"
Run Code Online (Sandbox Code Playgroud)
执行此操作后,每个单元格值在 Excel 中都显示为公式,因此不会被格式化为数字、日期等。例如,值 012345 显示为:
="012345"
Run Code Online (Sandbox Code Playgroud)
这里提供的解决方案都不是一个好的解决方案。它可能适用于个别情况,但前提是您可以控制最终显示。以我的例子为例:我的工作产生了他们销售给零售的产品清单。这是 CSV 格式并包含零件代码,其中一些以零开头,由制造商设置(不受我们控制)。去掉前导零,您实际上可能会匹配另一个产品。零售客户需要 CSV 格式的列表,因为后端处理程序也不受我们控制且因客户而异,因此我们无法更改 CSV 文件的格式。没有前缀'=',也没有添加标签。原始 CSV 文件中的数据正确;当客户在 Excel 中打开这些文件时,问题就开始了。并且许多客户并不真正精通计算机。他们几乎可以打开并保存电子邮件附件。我们正在考虑以两种略有不同的格式提供数据:一种为 Excel Friendly(使用上面建议的选项,通过添加 TAB,另一种作为“主”。但这可能是一厢情愿,因为有些客户不明白为什么我们需要这样做。同时我们继续解释为什么他们有时会在他们的电子表格中看到“错误”的数据。在微软做出适当的改变之前,我认为没有适当的解决方案,只要人们无法控制最终用户的方式使用文件。但这可能是一厢情愿的想法,因为有些客户不明白我们为什么需要这样做。与此同时,我们继续解释为什么他们有时会在电子表格中看到“错误”的数据。在 Microsoft 做出适当更改之前,我认为没有适当的解决方案,只要人们无法控制最终用户如何使用这些文件。但这可能是一厢情愿的想法,因为有些客户不明白我们为什么需要这样做。与此同时,我们继续解释为什么他们有时会在电子表格中看到“错误”的数据。在 Microsoft 做出适当更改之前,我认为没有适当的解决方案,只要人们无法控制最终用户如何使用这些文件。
| 归档时间: |
|
| 查看次数: |
469158 次 |
| 最近记录: |