取出excel中的所有sheet表名的sql语句怎么写?

时间:2022-11-08 09:31:52
一个excel文件中 有多个sheet 如何用sql取出所有表名来?

14 个解决方案

#1


SELECT * 
FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, 
  ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions 

#2


因为我要用程序通过 odbc 取出来 并显示在我程序中

#3


--如果接受数据导入的表已经存在
insert into 表 select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

--如果导入数据并生成表
select * into 表 from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

#4


to happy
我去测试下 可以的话马上回来结贴

#5


提示 odbc 驱动程序不支持所需的属性

记录集打开的时候提示这个错误

#6


所有Sheet的表名,应该是读不出来的。

楼上的都是读取某个Sheet的数据:[Sheet1$]加左右中括号,Sheet1表示Sheet名,不知道为什么要加美元符$,反正不加不行。

#7


to Limpire

应该是有办法读取出来的呀

#8


我也想知道,帮你顶

#9


SQL语句可以实现吗,没有做过

不过利用其他的编程工具可以实现

#10


关注这个问题!!

#11


up 帮顶

#12




select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Reporttemplate\PPVAPO.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

#13


1.用vb写一个工程名为GetSheet,类为GetS的dll
代码如下:
Option Explicit

Dim Ex As New Excel.Application
Dim Wk As New Excel.Workbook

Public Function GetSheetName(PathT As String) As String
Dim I As Integer
Dim StrName As String

StrName = ""

Set Wk = Ex.Workbooks.Open(PathT)
If Wk.Worksheets.Count < 1 Then
    StrName = ""
Else
    For I = 1 To Wk.Worksheets.Count
          StrName = StrName & Wk.Worksheets(I).Name & "|"
    Next
End If
Wk.Save
Ex.Quit
Set Wk = Nothing
Set Ex = Nothing
GetSheetName = StrName
End Function


2.注册dll并用sql调用
declare @objC int,@hr int
declare @x varchar(100)

exec @hr=master..sp_OACreate 'GetSheet.getS',@objC output
if @hr<>0
begin
set @hr=1
goto Error
end

exec @hr=master..sp_OAMethod @objC,'GetSheetName',@x out,'e:\test.xls'
if @hr<>0 
begin
set @hr=2
goto Error
end

select '表名为:'+@x
exec master..sp_OAdestroy @objc
Error:
   print 'error: ' +ltrim(@hr)
   exec master..sp_OAdestroy @objc
--result
/*-------------- 
Sheet1|Sheet2|Sheet3|Sheet4|
*/

#14


select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Reporttemplate\PPVAPO.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')


读取某个Sheet的数据:[Sheet1$]加左右中括号,Sheet1表示Sheet名,不知道为什么要加美元符$,反正不加不行。

#1


SELECT * 
FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’, 
  ’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions 

#2


因为我要用程序通过 odbc 取出来 并显示在我程序中

#3


--如果接受数据导入的表已经存在
insert into 表 select * from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

--如果导入数据并生成表
select * into 表 from 
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

#4


to happy
我去测试下 可以的话马上回来结贴

#5


提示 odbc 驱动程序不支持所需的属性

记录集打开的时候提示这个错误

#6


所有Sheet的表名,应该是读不出来的。

楼上的都是读取某个Sheet的数据:[Sheet1$]加左右中括号,Sheet1表示Sheet名,不知道为什么要加美元符$,反正不加不行。

#7


to Limpire

应该是有办法读取出来的呀

#8


我也想知道,帮你顶

#9


SQL语句可以实现吗,没有做过

不过利用其他的编程工具可以实现

#10


关注这个问题!!

#11


up 帮顶

#12




select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Reporttemplate\PPVAPO.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]

#13


1.用vb写一个工程名为GetSheet,类为GetS的dll
代码如下:
Option Explicit

Dim Ex As New Excel.Application
Dim Wk As New Excel.Workbook

Public Function GetSheetName(PathT As String) As String
Dim I As Integer
Dim StrName As String

StrName = ""

Set Wk = Ex.Workbooks.Open(PathT)
If Wk.Worksheets.Count < 1 Then
    StrName = ""
Else
    For I = 1 To Wk.Worksheets.Count
          StrName = StrName & Wk.Worksheets(I).Name & "|"
    Next
End If
Wk.Save
Ex.Quit
Set Wk = Nothing
Set Ex = Nothing
GetSheetName = StrName
End Function


2.注册dll并用sql调用
declare @objC int,@hr int
declare @x varchar(100)

exec @hr=master..sp_OACreate 'GetSheet.getS',@objC output
if @hr<>0
begin
set @hr=1
goto Error
end

exec @hr=master..sp_OAMethod @objC,'GetSheetName',@x out,'e:\test.xls'
if @hr<>0 
begin
set @hr=2
goto Error
end

select '表名为:'+@x
exec master..sp_OAdestroy @objc
Error:
   print 'error: ' +ltrim(@hr)
   exec master..sp_OAdestroy @objc
--result
/*-------------- 
Sheet1|Sheet2|Sheet3|Sheet4|
*/

#14


select * from  OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Reporttemplate\PPVAPO.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')


读取某个Sheet的数据:[Sheet1$]加左右中括号,Sheet1表示Sheet名,不知道为什么要加美元符$,反正不加不行。