gpt4 book ai didi

sql-server - 在 SQL Server 中获取 Excel 工作表名称

转载 作者:行者123 更新时间:2023-12-02 12:26:14 24 4
gpt4 key购买 nike

如何使用 SQL Sever 2005 获取 Excel 文件中的工作表名称?

请注意:

  • 没有前端(C#、VB、PHP 等);
  • 我试图仅使用 SQL Server 2005 来获取工作表名称。

谢谢。

最佳答案

至少有两种可能性可以做到这一点。我首先要承认,我没有一种简单的方法可以在 SQL Server 2005 中检查这一点,目前只有 2008 年。

1:创建链接服务器并使用 sp_tables_ex 和/或 sp_columns_ex:

-- Get table (worksheet) or column (field) listings from an excel spreadsheet

-- SET THESE!
declare @linkedServerName sysname = 'TempExcelSpreadsheet'
declare @excelFileUrl nvarchar(1000) = 'c:\MySpreadsheet.xls'
-- /SET

-- Remove existing linked server (if necessary)
if exists(select null from sys.servers where name = @linkedServerName) begin
exec sp_dropserver @server = @linkedServerName, @droplogins = 'droplogins'
end

-- Add the linked server
-- ACE 12.0 seems to work for both xsl and xslx, though some might prefer the older JET provider
exec sp_addlinkedserver
@server = @linkedServerName,
@srvproduct = 'ACE 12.0',
@provider = 'Microsoft.ACE.OLEDB.12.0',
@datasrc = @excelFileUrl,
@provstr = 'Excel 12.0;HDR=Yes'

-- Grab the current user to use as a remote login
declare @suser_sname nvarchar(256) = suser_sname()

-- Add the current user as a login
exec sp_addlinkedsrvlogin
@rmtsrvname = @linkedServerName,
@useself = 'false',
@locallogin = @suser_sname,
@rmtuser = null,
@rmtpassword = null

-- Return the table/column info
exec sp_tables_ex @linkedServerName
exec sp_columns_ex @linkedServerName

-- Remove temp linked server
if exists(select null from sys.servers where name = @linkedServerName) begin
exec sp_dropserver @server = @linkedServerName, @droplogins = 'droplogins'
end

我找到了这个灵感here .

2:使用概述的 Ole 自动化过程 here 。我自己没有尝试过这个。

关于sql-server - 在 SQL Server 中获取 Excel 工作表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com