Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2005 OPENROWSET插入Excel-文本到数字格式_Sql Server_Excel_Formatting_Openrowset - Fatal编程技术网

Sql server SQL Server 2005 OPENROWSET插入Excel-文本到数字格式

Sql server SQL Server 2005 OPENROWSET插入Excel-文本到数字格式,sql-server,excel,formatting,openrowset,Sql Server,Excel,Formatting,Openrowset,所以这并不是什么大问题,但谷歌没有返回任何最近的信息,主要是2007年左右,可能是Excel驱动程序的问题……我来这里问这个问题,因为如果没有进一步的研究,我发现答案是不可接受的 我的问题是: 编写动态OPENROWSET查询清除并插入新数据以向特定用户发送报告-基本excel报告包含一些公式,其中它根据插入的数据进行计算和求和,乘法公式似乎工作正常,但除非总数在Excel中以数字而不是文本格式正确格式化,否则总和将无法正常工作 解决方案必须是基于自由形式的。如果有解决方案,我不想将所有代码传输

所以这并不是什么大问题,但谷歌没有返回任何最近的信息,主要是2007年左右,可能是Excel驱动程序的问题……我来这里问这个问题,因为如果没有进一步的研究,我发现答案是不可接受的

我的问题是:

编写动态OPENROWSET查询清除并插入新数据以向特定用户发送报告-基本excel报告包含一些公式,其中它根据插入的数据进行计算和求和,乘法公式似乎工作正常,但除非总数在Excel中以数字而不是文本格式正确格式化,否则总和将无法正常工作

解决方案必须是基于自由形式的。如果有解决方案,我不想将所有代码传输到SSIS

更新/插入代码:

    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)
第二个问题,现在可能不是问题,但稍后-在插入之后,它似乎在结果周围创建边界。在结果转移过程中,是否有一种可能的方法来删除这些内容


如果这是一个驱动程序问题,我非常感谢您提供的任何帮助或资源,因为我找不到任何帮助或资源。

我所知道的唯一方法是在您正在写入的Excel工作表中创建一个虚拟数据行。 将伪数据以您希望导出数据的格式放入此行。如果需要,可以隐藏此行

这应该可以解决这两个问题,但是您必须处理伪行,如果您正在使用数据透视表的数据,这可能会很烦人。您是否尝试将IMEX=1添加到连接字符串中?它应该强制驱动程序将列中的所有内容作为文本提供给您,而不管它们的解释格式如何

这里有一个使用它的连接字符串的完整示例