关于SQLserver直接读写Excel文档的技术汇总
直接使用SQL语句读取Excel表格内容
示例一:
SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="c:\zt.XLS";Extended Properties="Excel 8.0";Persist Security Info=False')...[a1$]
确保你的c:\zt.xls中包含工作表 a1,如果文件中没有工作表a1,应该换成文件中有的工作表名,如果文件中有工作表a1,则使用我上面的方法(一般读取excel文件中的表,都要在工作表名后加$)
示例二:
select * from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="E:\工作文档\毕业设计\空气质量预测\四季神经计算数据.xls";Extended Properties="Excel 8.0";Persist Security Info=False')...[春季$]
以上查询语句位于一行中,且我的xls表的中有一个工作表的名字就是:春季。
使用SQL语句将sql-server导入excel中
>>从SQL数据库中,导出数据到Excel,如果Excel文件已经存在,而且已经按照要接收的数据创建好表头,就可以简单的用:
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) select * from 表
>>如果Excel文件不存在,也可以用BCP来导成类Excel的文件,注意大小写:
--导出表的情况
EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c /S"服务器名" /U"用户名" -P"密码"'
--导出查询的情况
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout "c:\test.xls" /c /S"服务器名" /U"用户名" -P"密码"'
/*--说明:
c:\test.xls 为导入/导出的Excel文件名.要求文件在SQL服务器上,或者SQL服务器可以访问的共享目录上
sheet1$ 为Excel文件的工作表名,一般要加上$才能正常使用.
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_exporttb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_exporttb]
GO