Excel 作为 SSRS 中的数据源查询 Sheet 的特定列
Excel as a data source in SSRS Query a Specific Column of a Sheet
我想使用 Excel 12.0 的 ODBC 系统 DSN 从 excel 文件中查询数据。
从工作表而不是整个工作表中查询特定列的正确语法是什么:
SELECT 'Sheet1$'.* 来自 'Sheet1$'**
我需要能够不查询所有这些并且不让导入空白行。
最好的办法是使用 OPENROWSET。如果你 Excel 文件有列 headers 那么你可以做类似
Select MyFirstColumn, MySecondColumn, MyThridColumn, MyLastColumn FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=\myServer\MyPath\MyFile.xlsx;HDR=YES', 'SELECT * FROM [myWorkSheet$]')
如果您没有行 headers,则设置 HDR=NO
并使用列名称 F1, F2....F99
等
您可以添加一个 where 子句来过滤掉空行,就像您使用常规 table 一样。
注意 您将需要允许 ad-hoc 查询并确保提供程序已安装在 esrver 上。有很多文章介绍如何做到这一点,非常简单。
另请记住,该路径必须对服务器可见,而不仅仅是您的本地工作站。
我想使用 Excel 12.0 的 ODBC 系统 DSN 从 excel 文件中查询数据。
从工作表而不是整个工作表中查询特定列的正确语法是什么:
SELECT 'Sheet1$'.* 来自 'Sheet1$'**
我需要能够不查询所有这些并且不让导入空白行。
最好的办法是使用 OPENROWSET。如果你 Excel 文件有列 headers 那么你可以做类似
Select MyFirstColumn, MySecondColumn, MyThridColumn, MyLastColumn FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=\myServer\MyPath\MyFile.xlsx;HDR=YES', 'SELECT * FROM [myWorkSheet$]')
如果您没有行 headers,则设置 HDR=NO
并使用列名称 F1, F2....F99
等
您可以添加一个 where 子句来过滤掉空行,就像您使用常规 table 一样。
注意 您将需要允许 ad-hoc 查询并确保提供程序已安装在 esrver 上。有很多文章介绍如何做到这一点,非常简单。
另请记住,该路径必须对服务器可见,而不仅仅是您的本地工作站。