2012-04-27 33 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