我正在开发一个.NET应用程序,它导出CSV文件在Excel中打开,而我在Excel中打开文件时遇到保留前导零的问题。我使用了http://creativyst.com/Doc/Articles/CSV/CSV01.htm#CSVAndExcel
中提到的方法这很有效,直到用户决定将CSV文件保存在Excel中。如果在Excel中再次打开文件,则前导零将丢失。
生成CSV文件时我能做些什么来防止这种情况发生。
答案 0 :(得分:2)
答案 1 :(得分:1)
正如@GSerg所提到的,这不是CSV问题。
如果您的用户必须在Excel中编辑/保存,则需要选择整个工作表,右键单击并选择“格式化单元格”,然后在打开csv文件后从类别列表中选择“文本”。这将保留前导零,因为数字将被视为简单文本。
或者,您可以使用Open XML SDK 2.0或其他一些Excel库从csv数据创建xlsx文件,并通过programmaticaly将Cell类型设置为Text,以便将最终用户排除在等式之外。
答案 2 :(得分:1)
我找到了一个很好的解决方法,如果你在电话号码的任何地方添加一个空格,则该单元格不会被视为数字并被处理作为Excel和Apple的iWork Numbers中的文本单元。
这是迄今为止我发现的唯一可以与Numbers配合使用的解决方案。
是的我知道这个数字有一个空格,但这很容易处理大块的数据,你只需要选择一个列并删除所有空格。
此外,如果这与网络相关,那么大多数网络类型的内容都可以,用户在数字字段中输入空格。例如,您可以通过手机轻松拨打电话。
挑战在于首先在那里占据空间。
使用中:
01202123456 = 1202123456
但
01202 123456 = 01202 123456
答案 3 :(得分:-1)
好的,新发现。
使用 Mac上的快速预览查看CSV文件,电话栏将完美显示,但使用Numbers或Excel完全打开文件会破坏该列。
在某种程度上,Mac OS X能够正确处理该列而无需用户干预。
我现在正致力于最好/最简单的方法,让网站输出一个普遍接受的CSV,并保留电话号码。
但也许有了这个信息,其他人对如何让Numbers以与Quick Preview相同的方式处理文件有所了解?