环境:win7(64位)+sql2008

sql语句:

   --启用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 --允许在进程中使用ACE.OLEDB.12
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
--允许动态参数
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 --读取excel方式1
select * from OpenRowSet
('Microsoft.ACE.OLEDB.12.0',
'Excel 8.0;HDR=Yes;IMEX=1;Database=c:\data.xls',
[Sheet1$]
)
--读取excel方式2
SELECT * FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source=c:/data.xls;Extended properties=Excel 8.0')...Sheet1$

读取excel列名称

 ----普通表测试
--if(OBJECT_ID('test@') is not null)
--drop table test@
--SELECT *
--into test@
--FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source=c:\data.xls;Extended properties=Excel 8.0')...Sheet1$
----select * from test@
----打印excel表列名称
--declare @list nvarchar(max),@sql nvarchar(max)
--set @list=''
--set @sql=''
--select @list=@list+'['+rtrim(b.name)+'],' from sysobjects a,syscolumns b where a.id=b.id and a.name='test@'
----print('@list:'+@list)
--set @sql='select '+left(@list,len(@list)-1)+' from test@'
--print(@sql) --临时表测试
if(OBJECT_ID('tempdb..#temp') is not null)
drop table #temp
SELECT *
into #temp
FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source=c:\data.xls;Extended properties=Excel 8.0')...Sheet1$
--select * from #temp
--打印excel表列名称
declare @list nvarchar(max),@sql nvarchar(max)
set @list=''
set @sql=''
select @list=@list+'['+rtrim(b.name)+'],' from tempdb.sys.columns b where object_id = object_id('tempdb..#temp')
--print('@list:'+@list)
set @sql='select '+left(@list,len(@list)-1)+' from #temp'
print(@sql)

常用sql:

--临时表测试
if(OBJECT_ID('tempdb..#temp') is not null)
drop table #temp
SELECT *
into #temp
FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source=c:\1.xls;Extended properties=Excel 8.0')...Sheet1$
--select * from #temp
--select distinct AMS ,PAR from #temp
--打印excel表列名称
declare @list nvarchar(max),@sql nvarchar(max),@list1 nvarchar(max),@sql1 nvarchar(max)
,@listC nvarchar(max)
set @list=''
set @sql=''
set @sql1=''
set @list1=''
set @listC='' select @list=@list+'['+rtrim(b.name)+'],'
--select *
from tempdb.sys.columns b
where object_id = object_id('tempdb..#temp')
----C#赋值
select @listC=@listC+'rowNew["'+rtrim(b.name)+'"]'+'= rowstmp[i]["'+rtrim(b.name)+'"];'
--select *
from tempdb.sys.columns b
where object_id = object_id('tempdb..#temp')
----C#后台页面sql
select @list1=@list1+' '''''''' + convert(nvarchar,ISNULL(t.['+rtrim(b.name)+'],'''')) + '''''''' +'' as '+'['+rtrim(b.name)+'] ,'' +'
--select *
from tempdb.sys.columns b
--cross join (select top * from #temp) t
where object_id = object_id('tempdb..#temp') --print('@list:'+@list)
set @sql='select '+left(@list,len(@list)-)+' from #temp'
print(@sql) --第一行数据作为组建的sql的值
set @sql1='select '+left(@list1,len(@list1)-)+' from (select top 1 * from #temp) t '
print(@sql1)
exec(@sql1) print(@listC)

--去除,  stuff

select r.phone,[costnum]=COUNT() , [ordernos] = stuff((select ',' + [t].[orderno] from t_red t where r.phone = t.phone for xml path('')) ,  ,  , '')
from t_red r
group by r.phone

提示:

OLE DB 访问接口 'Microsoft.Jet.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询  报错原因:在64SQL Engine中已经不提供jet.oledb.4.0的驱动了

解决:下载一个ACE.Oledb.12.0 for X64位的驱动,并把连接字符串Microsoft.jet.Oledb.4.0 更改为 Microsoft.ACE.OLEDB.12.0

从微软的主页下载,会发现有两个版本,一个是位32位系统准备的,另一个是为64位系统准备的。因为我们是Win7 64位系统,而且项目用到的dll都是64位的,所以要装Microsoft Access Engine-x64,但是安装的时候会检测到你机器上安装的是32位的Office,要求你把Office升级到64位, 直接安装它要求提示删除,

1,删除32位Microsoft Access Engine.exe(控制面板,添加删除程序) 
2,使用"/passive"命令来安装,例如"C:\directory path\AccessDatabaseEngine_x64.exe" /passive
3,安装完成后,查看注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths,删除mso.dll

sql2008读取excel的更多相关文章

  1. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  2. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  3. C#读取Excel,或者多个excel表,返回dataset

    把excel 表作为一个数据源进行读取 /// <summary> /// 读取Excel单个Sheet /// </summary> /// <param name=& ...

  4. PHP读取EXCEL时间

    在使用php读取excel表格中的时间时得到一串数字而不是时间:40359.58333333334 excel 中的时间值是自1900年以来的天数,注意是格林威治时间php 中的时间值是自1970年以 ...

  5. Open Xml 读取Excel中的图片

      在我的一个项目中,需要分析客户提供的Excel, 读出其中的图片信息(显示在Excel的第几行,第几列,以及图片本身). 网络上有许多使用Open Xml插入图片到Word,Excel的文章, 但 ...

  6. 使用Open xml 操作Excel系列之一-读取Excel

    一. 安装Open Xml SDK 从微软网站下载Open xml SDK,安装SDK. 二. 在项目中添加对DocumentFormat.OpenXml库的引用

  7. 使用NPOI读取Excel报错ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature

    写了一个小程序利用NPOI来读取Excel,弹出这样的报错: ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature ...

  8. C#读取Excel设置(亲测可用)

    OpenFileDialog openFD = new OpenFileDialog(); openFD.FileName = ""; openFD.Filter = " ...

  9. 使用Aspose.Cells读取Excel

      最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...

随机推荐

  1. iOS开发环境C语言基础 数组 函数

    1 求数组元素的最大值 1.1 问题 创建程序,实现查询数组中最大值的功能,需求为:创建一个长度为10的数组,数组内放置10个0~99之间(包含0,包含99)的随机数作为数组内容,要求查询出数组中的最 ...

  2. selenium执行js报错

    selenium执行js报错 Traceback (most recent call last):    dr.execute_script(js)  File "C:\Python27\l ...

  3. archlinux下查看机器的ip地址

    问题原因 默认archlinux没有安装ifconfig这个在其它发行版中常用的命令,刚开始不知道怎么查看机器的ip. 解决方案 使用archlinux中已经安装的ip命令.在后面跟上addr, ro ...

  4. UVa 11714 - Blind Sorting

    题目题意: 有n个不同的数,你可以询问a,b哪个大,会得到答案,然后问最少要几次保证能挑选出最大和第二大的数. 分析: n个数,先以打擂台的方式,两两比较出最大的,n - 1次,然后在由被最大PK下去 ...

  5. Vimium 快捷键记录

    , <c-e> : Scroll down k, <c-y> : Scroll up h : Scroll left l : Scroll right gg : Scroll ...

  6. C陷阱与缺陷 1

    1,符号之间的空白被忽略 符号中间不能嵌入空白 2,词法分析中的贪心法 a---b 和 a-- -b相同 和 a- --b不同 1 a=b/*p //根据贪心法 /*被解释成 注释符,便不再往下读,直 ...

  7. Linux软件安装管理概述

    介绍如何在Linux字符界面下安装软件 课程大纲: 一.软件包管理简介 二.rpm命令管理 三.yum在线管理 四.源码包管理 五.脚本安装包

  8. jQuery select操作控制方法小结

    需要注意的是,这里的代码好多是针对jquery 1.32以前的版本(以后的版本已经不支持@),所以替换为空测试下即可. jQuery获取Select选择的Text和Value: 语法解释: 1. $( ...

  9. 越狱Season 1-Season 1, Episode 3: Cell Test

    Season 1, Episode 3: Cell Test -CO: Oh, my God. 我的天 Williamson, get in here. Williamson 快进来 What the ...

  10. HTTP 状态消息

    1xx: 信息 消息: 描述: 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求. 101 Switching Protocols 服务器 ...