Sql server SQL Server OPENROWSET从Excel表中选择

Sql server SQL Server OPENROWSET从Excel表中选择,sql-server,excel,Sql Server,Excel,我正在尝试将Excel(xlsx)文件解析为SQL Server。一张纸里有许多表格,我不确定如何处理 我知道我可以通过以下方式提取整个工作表: SELECT * FROM OPENROWSET ( 'Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=\\afcn2011\root\DATA\VisualCron\SharePoint\Templates\Kitchen+Bar Inventory.x

我正在尝试将Excel(xlsx)文件解析为SQL Server。一张纸里有许多表格,我不确定如何处理

我知道我可以通过以下方式提取整个工作表:

SELECT *
    FROM OPENROWSET
    (
        'Microsoft.ACE.OLEDB.12.0',
        'Excel 12.0; Database=\\afcn2011\root\DATA\VisualCron\SharePoint\Templates\Kitchen+Bar Inventory.xlsx; HDR=NO; IMEX=1',
        'SELECT * FROM [Inventory$]'
    )
但我希望有一种方法可以从工作表中的特定表中进行选择

例如,每种酒我都有一张桌子;伏特加、杜松子酒、波旁威士忌等等,它们都被命名为“伏特加酒”、“金泰伯酒”、“波旁酒”等等

有没有一种方法可以从特定的表中进行选择?请记住,范围会随着时间的推移而变化,所以我不能只说$A10:$B20或类似的东西。 但是像这样的事情:

SELECT *
    FROM OPENROWSET
    (
        'Microsoft.ACE.OLEDB.12.0',
        'Excel 12.0; Database=\\afcn2011\root\DATA\VisualCron\SharePoint\Templates\Kitchen+Bar Inventory.xlsx; HDR=NO; IMEX=1',
        'SELECT * FROM [Inventory$VodkaTable]'
    )
我现在也试过了: 我定义了一个名为“VodkaData”的伏特加表:

然后我使用了这个查询:

SELECT *
    FROM OPENROWSET
    (
        'Microsoft.ACE.OLEDB.12.0',
        'Excel 12.0; Database=\\afcn2011\root\DATA\VisualCron\SharePoint\Templates\Kitchen+Bar Inventory.xlsx; HDR=NO; IMEX=1',
        'SELECT * FROM [VodkaData]'
    )
但我得到了这个错误:

OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)" returned message "The Microsoft Access database engine could not find the object 'VodkaData'. Make sure the object exists and that you spell its name and the path name correctly. If 'VodkaData' is not a local object, check your network connection or contact the server administrator.".
Msg 7350, Level 16, State 2, Line 1
Cannot get the column information from OLE DB provider "Microsoft.ACE.OLEDB.12.0" for linked server "(null)".
您需要在工作表中定义一个

然后您可以使用
OPENROWSET
像这样访问它:
“从[MyNamedRange]中选择*”


顺便说一句,除非您真的需要,否则我会避免从T-SQL执行此操作。SSI和其他工具更适合。

我在问题中添加了一些更详细的内容,因为我刚刚尝试了这一点,但我遇到了一个错误。
SELECT*FROM[Worksheet:MyNamedRange]
?看到相同的错误消息。抱歉
SELECT*FROM[Worksheet$MyNamedRange]
是的,这实际上是我认为你的意思,所以我也尝试过,但问题相同。我目前正试图在本地登录到保存该文件的服务器,以查看它是否属于某种权限。