在Access 2007中导出CSV文件:禁用科学计数法

4
从Access 2007导出CSV时,它会自动将小数转换为科学计数法。不幸的是,接收这些数据的工具将这些字段视为文本,并按原样显示。被导出的值来自针对一些Excel链接表运行的查询,在查询视图中它们看起来完美无缺。有没有办法禁用自动转换为科学计数法?也就是说,如果在查询中出现0.007,则在输出CSV中将显示为0.007而不是7E3?注意:我必须使用Excel和Access进行此操作。尽管我很想切换到SQL Server,但如果我在她的工作笔记本电脑上安装它,我的妻子会很不高兴!
3个回答

5
您有几个选择:
  • you can use the Format() function directly in your query to force the data in the offending columns to be formatted a certain way, for instance:

    SELECT ID, Format([Price],"standard") as Pricing FROM ORDERS;
    
  • you can write your own CSV export routine in VBA.
    I posted one recently as an answer to this question.

您可以轻松修改代码以按特定方式格式化数字类型。
如果您不知道如何操作,请告诉我,我会修改代码并在此处发布。


对我来说,只有在将数字减少到更少的(两个)小数位时,使用Format()才有效。当小数位超过两个时,在导出文件中仍然使用科学计数法,即使我使用“常规数字”进行格式化。上面链接的CSV导出例程即使有超过两个小数位,也对我有效。 - Jörg Brenninkmeyer

1
你可以在Access中编写少量的VBA代码来查询链接表或Access查询中的数据,并将其写入文本文件,从而创建自己的.CSV文件,避免使用“向导”。我从来不太喜欢Access的导出“向导”,而是自己创建文件。

啊!我已经很久没有碰 VBA 了,但这里有一些伪代码: ' 在 ADODB.Recordset 中打开查询 ' 使用本地的 VBA 文件 I/O 打开一个文件进行写入。 ' 遍历 Recordset,在 Recordset 中写入所有字段。连接你自己的引号和逗号。 ' 关闭 Recordset 和文件。 - HardCode
为什么在Access中使用ADO?DAO更加合适。 - David-W-Fenton

0

在查询中处理这个问题的一种简单方法是将该值转换为长整型,然后再转换为字符串。 对于CSV导出而言,它无论如何都是字符。

myValue:ZString(ZLong(123456789))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接