2012-02-19 71 views
0

所以這不是一個大問題,但是Google沒有返回任何更近的(大多數是2007年左右)關於它可能是Excel驅動程序的問題......我來到這裏如果沒有進一步的研究,我認爲作爲「答案」的問題是不可接受的。SQL Server 2005 OPENROWSET插入到Excel中 - 文本到數字格式化

我的問題:

編寫動態OPENROWSET查詢清楚,插入新的數據將報告發送關閉特定用戶 - 基本的Excel報表包含了一些公式,它計算出關和資金基礎斷插入的數據和乘法公式似乎工作正常,但除非總數在Excel中被正確格式化爲「數字」而不是文本總和將不起作用...

解決方案必須基於自由格式(如果有解決方案所有),我不想將我的所有代碼轉移到SSIS ...

更新/ Inser T代碼:

SELECT @sqlu = 'UPDATE OPENROWSET(' + 
    '''Microsoft.ACE.OLEDB.12.0'', ' + 
    '''Excel 12.0;Database=' + @File + ';HDR=YES'', ' + 
    '''SELECT * FROM [Base$B1:G601]'') 
    SET 
    col1 = '''', col2 = '''', col3 = '''', col4 = '''', col5 = '''', col6 = '''' ' 


    EXEC (@sqlu) 


    SELECT @sqli = 'INSERT INTO OPENROWSET(' + 
    '''Microsoft.ACE.OLEDB.12.0'', ' + 
    '''Excel 12.0;Database=' + @File + ';HDR=NO'', ' + 
    '''SELECT * FROM [Base$B1:G2]'') 

    SELECT col1, col2, col3, col4, col5, col6 
    FROM [DATABASE].[dbo].tbl_CIM 
    WHERE col1 IN(''' + @area + ''')' 


    EXEC (@sqli) 

第二個問題,它可能不會是一個問題,現在,但後來 - 插入後,它似乎圍繞創建成果邊界。在結果轉移過程中是否有潛在的方法來消除這些問題?

任何幫助或來源來研究,如果它是一個驅動程序問題,讚賞,因爲我什麼都找不到。

回答

0

我知道的唯一方法是在您寫入的Excel工作表中創建一個虛擬的數據行。 以與您希望數據導出的格式相同的格式在此行中放入假數據。如果需要,可以隱藏此行。

這應該解決這兩個問題,但你必須處理啞行,如果你正在使用的數據透視表

0

您是否嘗試過加入IMEX=1到您的連接字符串,可惱人的?它應該強制驅動程序將文本中的所有內容作爲文本提供給您,無論其解釋格式如何。

有一個使用它的連接字符串的完整示例here