2012-04-27 58 views
1

我有这个SQL服务器查询,我在我的.net应用程序中运行。如何防止数据以科学形式显示?

(CONVERT(VARCHAR(8), EventDate, 112)+ substring(RequestedBy,1,1)+right('0000000' + convert(varchar(7), ContactID), 7)) as Contacts 

它产生于以下格式如下结果:

20120731e0000001 20120731f0000002 20120731p0000003

这是我们想要的结果和格式。

问题是当我们点击导出图标将这些结果导出为ex​​cel时,第一个变为科学格式如2.01E + 08。

中间有e的任何日期,如20120731 * e * 0000001变成科学数据。

其余的就好了。

任何想法如何解决这个问题?

如果我在标签部分贴错标签,我想先行道歉,因为我不确定修补程序可能来自哪里。

+1

尝试以不同的格式保存结果:http://stackoverflow.com/a/137473/5987 – 2012-04-27 15:38:59

回答

1

当您直接使用Excel打开导出的数据文件时,所有格式均设置为常规。在通用格式中,Excel将格式设置为数字和日期。所以,要清楚的是,问题不在于您的导出,而在于Excel如何在默认情况下读取您的数据。尝试以下措施解决此问题。

导出为CSV。然后,而不是在Excel中打开CSV,请使用Excel的'从文本获取外部数据'工具将数据导入空白工作簿。在这里您可以指定将此字段视为TEXT而不是GENERAL。

请注意,一旦Excel将数字(或日期)格式应用于单元格,单元格中的数据已更改。没有应用新的格式会带回您想要的数据。因此,您必须在 Excel打开文件之前指定格式

+1

对,我明白这一点,很多人都花时间解释它。 我正在为超过30名用户这样做,他们会经常导出数据。我不确定他们会为了获取正确的数据而操作它而感到高兴。我只是希望有一些vb代码或一些东西,这将有助于操纵excel,以保持它点击打开按钮后所接收的值。 – Kenny 2012-04-27 18:41:11

2

当Excel打开导出的文件时,就会发生格式化。只需将列更改为具有“格式化文本”的字符串,以便它显示为原始格式。

+0

我相信你想说“数字格式”>“文本”;) – Aprillion 2012-04-27 15:40:42

+0

@deathApril:给予的危险当你在你的手机上的答案:-) – 2012-04-27 16:01:30

+0

谢谢你的好评。目前为止,我没有强制Excel将程序转换为指数的程序化方式。 – Kenny 2012-04-27 16:26:19

相关问题