如何用SQL语句查询Excel数据
答案:2 悬赏:70 手机版
解决时间 2021-01-28 04:24
- 提问者网友:末路
- 2021-01-27 20:25
如何用SQL语句查询Excel数据
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-01-27 21:04
SELECt *
FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0',
'Data Source="c:\book1.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$]
SELECt * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECt * FROM [Sheet1$A1:D100]')
SELECt * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECt * FROM [Sheet1$]')
2003版本:
SELECt *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]
SELECt * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECt * FROM [Sheet1$]')
SELECt * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECt * FROM [Sheet1$A1:D100]')
而且,还需要用拥有服务器sysadmin角色权限的登录帐号,先执行下列语句打开SQL SERVER的'Ad Hoc Distributed Queries'开关。
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
执行查询后,再用相反顺序的语句,关闭'Ad Hoc Distributed Queries'开关。
exec sp_configure 'Ad Hoc Distributed Queries',0;
reconfigure;exec sp_configure 'show advanced options',0;reconfigure;
FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0',
'Data Source="c:\book1.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$]
SELECt * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECt * FROM [Sheet1$A1:D100]')
SELECt * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECt * FROM [Sheet1$]')
2003版本:
SELECt *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]
SELECt * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECt * FROM [Sheet1$]')
SELECt * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECt * FROM [Sheet1$A1:D100]')
而且,还需要用拥有服务器sysadmin角色权限的登录帐号,先执行下列语句打开SQL SERVER的'Ad Hoc Distributed Queries'开关。
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;
执行查询后,再用相反顺序的语句,关闭'Ad Hoc Distributed Queries'开关。
exec sp_configure 'Ad Hoc Distributed Queries',0;
reconfigure;exec sp_configure 'show advanced options',0;reconfigure;
全部回答
- 1楼网友:渡鹤影
- 2021-01-27 22:11
在宏编辑界面中进行sql数据查询以及生成报表的代码如下:
sub static()
dim objnewworkbook as workbook '定义一个workbook对象
set objnewworkbook = workbooks.add(thisworkbook.path & "\模板.xlt") '使用模板文件新建一个excel报表生成文件
set objconnection = createobject("adodb.connection") '创建一个ado连接
objconnection.open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=yes;imex=1';data source=" & thisworkbook.fullname '设置连接字符串
strcommand = "select 施工人, count(*) as 拆电话 from [" & sheet1.name & "$] where 施工动作 = '拆' and 专业类型 = '电话' group by 施工人" '查询表单一中的数据源进行统计
?objnewworkbook.sheets(1).range("a3").copyfromrecordset objconnection.execute(strcommand)
2.将查询统计结果输出到目的报表文件的表单1的从a3开始的区域中
3.下面代码是调用excel的排序方式进行汉字排序,这里sql语句中的排序对于汉字排序与期望结果不同
4.使用excel中的排序方法是根据excel版本不同调用有所区别
select case application.version
case "11.0":
objnewworkbook.sheets(1).range("a3:m" & cstr(intsumrow - 1)).sort key1:=objnewworkbook.sheets(1).range("a3"), order1:=xlascending, header:=xlno, _
ordercustom:=1, matchcase:=false, orientation:=xltoptobottom, sortmethod _
:=xlpinyin, dataoption1:=xlsortnormal
case "12.0":
objnewworkbook.sheets(1).sort.sortfields.clear
objnewworkbook.sheets(1).sort.sortfields.add key:=range("a3:a" & cstr(intsumrow - 1)), sorton:=x
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯