CSV文件在Excel中打开时,凡是数字都会变成数字型的,过长的话就显示为科学计数法,如何解决?(200分)

  • 主题发起人 主题发起人 lovezhou
  • 开始时间 开始时间
L

lovezhou

Unregistered / Unconfirmed
GUEST, unregistred user!
比如以下例子:
文件内容为:
ABC,'69048111111111',123
其中 69048111111111 在Excel打开时就会补当作数字,显示为 6.904 E14不管你是否加上引号
更可气的是,如果是 0000000000000 就会显示成 0

请问如何解决
 
这是我查到的资料:

  Microsoft Excel 97 for Windows的自动重计算功能,可能只会在激活的工作簿中生效。现在的问题在于出现这种情况时没有任何提示信息,据说只有一个用户报告了这个错误。发布这条消息的站点称,微软在以下网址提供了修复补丁:http://www.microsoft.com/excel/recalc.htm。但三公子登录发现该页已经不存在了。不过这儿还有一种解决方案,在工作簿中使用CTRL+ALT+F9进行强行计算。
  如果做主页的朋友想把Microsoft Excel 97的工作簿作为一个对象插入到Netscape Navigator 3.0中时,那么你最好确定你所有的用户都是Excel熟练用户,因为在这个时候是无法得到Office小助手的指点的。Microsoft的解决方案是:先打开另一个使用Office小助手的程序,比如Word 97、 Access 97、 PowerPoint 97或者Outlook 97等。当你返回到Netscape窗口时,你会发现小助手已经在那儿等你了。
  在Excel中,如果在单元格中输入的时间超过正常时间,如输入“12:79”,会被自动转换成小数“0.554861111111111”。以下版本的Excel都存在该错误:Excel 97 for Windows、Excel for Windows 95、 7.0和7.0a版本和Excel for Windows 5.0、5.0a,5.0c版本。微软提供的解决方法是选中该格,然后选择菜单“格式”下的“单元格”。在弹出菜单中选择“数字”栏,设定“分类”为“日期”,然后选中你需要的显示格式,按下“确定”。
  用过友情强档的朋友一定知道,它支持一种叫作CSV格式的文件,用它可以非常方便地将Outlook Express中的地址簿导入。这是一种特殊的文本文件,所有字段之间用逗号区分。这样做有一个很大的好处,就是可以实现多种不同应用软件之间的数据共享,几乎整个Office家族的软件都支持对这种格式文件的导入和导出。然而就是这种非常简单的文件导出却存在一个很讨厌的错误,这个错误存在于Excel 97中。
  首先打开一个Excel工作簿,然后任意做一张表格,注意其中包括一个不小于12位的数字,比如:123456789012,可以看到Excel马上将其显示为1.234567E+11,然后在文件中选择“另存为...”,类型为“CSV(逗号分隔)”。然后用以下任何一套软件导入刚储存的文件:Access 97、 Word 97、 Quattro 8、 Word Perfect 8和Paradox 8。好了,现在可以看到问题了,Word Perfect产生以下错误:“the file you specified is not a spreadsheet, database or ASCII file.”Microsoft 自己出的Word提示“Word was unable to open data source.”而Corel Quattro Pro 则把所有的数据放在了同一个单元格里。
  用写字板打开该文件,可以看到存放123456789012的格子中存放着1.234567E+11,这就是一切问题的根源,Excel无法正确导出超过12位长的数字。对于以上提到的这些软件,由于在打开时考虑数据类型,就无法正确识别这种类型为数字,因为其中包括了“E”和“+”,一般会识别成字符串类型而出现错误。
  微软Office项目经理John Duncan说Excel设计时考虑了科学记数法,所以1234567E+11是合法的。“我们这样作的原因是我们认为我们的客户需要这样显示数据”,Duncan接着说,如果用户想要将大数字通过.CSV格式导出,那么可以使用字符串形式导出,然后用那些应用程序中的转换程序,将这些字符串转化成数字。Duncan强调说“这不是一个BUG,这是我们的一大特色”。
  三公子还想公道地说一句,这个问题的责任不能完全由微软负责,换个角度来说,以上这些软件的导入功能不够强大也是一个原因。但是微软很难解释为什么他们自己的Word也无法正确读取这种数据。
 
把Excel文档的单元格的格式定为文本或者你需要的类型就可以了
 
to yanghai :
不行的,我不想我的用户在Excel 中再去指定一次,再说了,本来应是字符串的
0000000000 和
结果却变成了 0 那才叫见鬼了,
大家都过来计论吧,见者有分,反正我觉得此题无解了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部