【发布时间】:2020-03-26 01:09:19
【问题描述】:
我正在开发一个 SSRS 报告,从 SQL Server 中提取大部分数据 数据库。
但是,数据库中有一小部分数据不可用 我每天都从 Excel 表中获取。
是否可以开发此报告并从两者中提取数据 数据库和 Excel 表?
【问题讨论】:
标签: excel reporting-services ssrs-2012
我正在开发一个 SSRS 报告,从 SQL Server 中提取大部分数据 数据库。
但是,数据库中有一小部分数据不可用 我每天都从 Excel 表中获取。
是否可以开发此报告并从两者中提取数据 数据库和 Excel 表?
【问题讨论】:
标签: excel reporting-services ssrs-2012
简而言之,是的,您可以做到这一点。
注意:以下两种方法都需要在您的服务器上安装一些驱动程序
选项 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.ACE.OLEDB.12.0 提供程序(它可能会在安装过程中执行此操作)。如果不只是搜索它,我会做的就是这样做。