2012-02-19 44 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