【问题标题】:Developing SSRS Report Using Data Source From Database and Excel使用来自数据库和 Excel 的数据源开发 SSRS 报告
【发布时间】:2020-03-26 01:09:19
【问题描述】:

我正在开发一个 SSRS 报告,从 SQL Server 中提取大部分数据 数据库。

但是,数据库中有一小部分数据不可用 我每天都从 Excel 表中获取。

是否可以开发此报告并从两者中提取数据 数据库和 Excel 表?

【问题讨论】:

    标签: excel reporting-services ssrs-2012


    【解决方案1】:

    简而言之,是的,您可以做到这一点。

    注意:以下两种方法都需要在您的服务器上安装一些驱动程序

    选项 1:从 SSRS 直接访问

    您可以通过 ODBC 或 OLEDB 连接直接添加指向 Excel 文件的第二个数据源。然后,您需要使用查找来有效地将数据“加入”到您的 SQL 数据中。有几个关于如何使用 Excel 数据作为 SSRS 数据源的指南。

    选项 2:从 t-SQL 访问 Excel 数据

    但是,我的方法是使用OPENROWSET 在您的 SQL Server 上执行此操作。通过这种方式,您可以直接在查询中访问数据并将其连接到您的 SQL 数据中,然后再将结果传递给您的报告。

    这里有一些典型的代码 sn-p 我将运行以将 Excel 数据输入我的数据库以进行进一步处理

    SET @Cols = 'Country, Category, Period, Amount'
    SET @Select = 'SELECT FROM [myExcelSheetName$A1:Z1000] '
    SET @path = '\\myfileserver\myfolder\'
    SET @filename = 'myExcelFile.xlsx'
    
    SET @ExecCmd = 'INSERT INTO myExcelImportTable (' + @cols + ')
                SELECT ' + @cols + ' 
                FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0;Database=' + @path + @filename + ';HDR=YES;IMEX=0'',''' +  @select + ''')
                WHERE Country != ''Country'' AND ISNULL(Country,'''') != '''' '
    
    PRINT @ExecCmd
    EXEC (@ExecCmd) AS LOGIN= 'myElevatedLoginName'
    

    **注意:** myElevatedLoginName 是具有管理员级别访问权限的 SQL 登录名。在测试/调试期间,我通常使用此登录名连接到我的服务器,因此您可以直接运行 t-sql 命令。

    【讨论】:

    • 谢谢!这两种方法都需要哪些驱动程序?
    • 看看这里microsoft.com/en-us/download/details.aspx?id=54920 你需要在你的 SQL Server 机器上安装这个。我不记得是否还有其他事情要做,但您需要注册 Microsoft.ACE.OLEDB.12.0 提供程序(它可能会在安装过程中执行此操作)。如果不只是搜索它,我会做的就是这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多