导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

jxwa_wzw 2007-12-19 05:25:52
一个excel文件中 有多个sheet 如何用sql取出所有表名来?
...全文
200 点赞 收藏 14
写回复
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingmax54212008 2007-12-26
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名,不知道为什么要加美元符$,反正不加不行。
回复
chuifengde 2007-12-26
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|
*/

回复
ojuju10 2007-12-20


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

回复
yiyi_wx 2007-12-20
up 帮顶
回复
云中客 2007-12-20
关注这个问题!!
回复
云中客 2007-12-20
SQL语句可以实现吗,没有做过

不过利用其他的编程工具可以实现
回复
Limpire 2007-12-19
我也想知道,帮你顶
回复
jxwa_wzw 2007-12-19
to Limpire

应该是有办法读取出来的呀
回复
Limpire 2007-12-19
所有Sheet的表名,应该是读不出来的。

楼上的都是读取某个Sheet的数据:[Sheet1$]加左右中括号,Sheet1表示Sheet名,不知道为什么要加美元符$,反正不加不行。
回复
jxwa_wzw 2007-12-19
提示 odbc 驱动程序不支持所需的属性

记录集打开的时候提示这个错误
回复
jxwa_wzw 2007-12-19
to happy
我去测试下 可以的话马上回来结贴
回复
-狙击手- 2007-12-19
--如果接受数据导入的表已经存在
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$)
回复
jxwa_wzw 2007-12-19
因为我要用程序通过 odbc 取出来 并显示在我程序中
回复
-狙击手- 2007-12-19
SELECT * 
FROM OpenDataSource( ’Microsoft.Jet.OLEDB.4.0’,
’Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0’)...xactions
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告