最近看到很多朋友在论坛上问SQL Server表与Excel、Access数据互导的问题,问题很简单,也很早就有人专门写文章讨论过这个问题,但看了那些文章,也没几个人讲得很明白,都是些很笼统的格式,估计初学者会被那些答案弄得稀里糊涂,更别说能学到新的东西。

        基于这个原因,下面我将详细的讲解互导的过程,当然,常规的在SQL Server管理器中得用向导互导的过程我就不多讲了,下面讲的都是直接用T-SQL语句来实现的。

        1、SQL Server导出为Excel:
        要用T-SQL语句直接导出至Excel工作薄,就不得不用借用SQL Server管理器的一个扩展存储过程:xp_cmdshell,此过程的作用为“以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。”下面为定义示例:
也谈SQL Server表与Excel、Access数据互导EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Book3.xls -c -q -S"servername" -U"sa" -P""'
也谈SQL Server表与Excel、Access数据互导
也谈SQL Server表与Excel、Access数据互导
--参数:S 是SQL服务器名;U是用户名;P是密码,没有就空着
也谈SQL Server表与Excel、Access数据互导

也谈SQL Server表与Excel、Access数据互导
--说明:其实用这个过程导出的格式实质上就是文本格式的,不信的话在导出的Excel表中改动一下再保存看看。

    实际例子与说明如下:
利用查询要用“queryout”关键字

        2、Excel导入SQL Server表:
        在SQL Server中,有定义一个OpenDateSource函数,用于引用那些不经常访问的 OLE DB 数据源,而我们的数据互导操作,就是建立在这个函数之上。
        
        首先看一个T-SQL帮助中的示例,描述如下:
也谈SQL Server表与Excel、Access数据互导--下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
也谈SQL Server表与Excel、Access数据互导

也谈SQL Server表与Excel、Access数据互导
SELECT * 
也谈SQL Server表与Excel、Access数据互导
FROM OpenDataSource'Microsoft.Jet.OLEDB.4.0',
也谈SQL Server表与Excel、Access数据互导  
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')也谈SQL Server表与Excel、Access数据互导xactions
也谈SQL Server表与Excel、Access数据互导
也谈SQL Server表与Excel、Access数据互导

        如果你直接引用这个示例进行查询,那么肯定是通不过的。关键在于语句中的两个地方需要修改,一处在于Data Source处,双引号内为Excel表格的实际存放位置,要修改为你想查询的Excel表实际完整路径;二为最后的...xactions,其实这里代表的是要进行的某些动作,下面会讲,这里修改成用中括号包围的Excel表中工作表名字(加上一个$)就可以了,如[Sheet1$]。当然,还可以将Excel 5.0改为Excel 8.0,因为5.0是以前的老版本了。

        下面是实例说明:
    

        SQL Server与Excel的数据互导讲解完了,你明白了吗?而Access和Excel的基本一样,只是要去掉Extended properties声明。 

=======================
Delphi示例(導出為excel表):
也谈SQL Server表与Excel、Access数据互导ADOQ1.Close;
也谈SQL Server表与Excel、Access数据互导       ADOQ1.SQL.Clear;
也谈SQL Server表与Excel、Access数据互导       sqltrs :
=
也谈SQL Server表与Excel、Access数据互导         
'INSERT INTO CTable (Name1,Sex,ID)'+
也谈SQL Server表与Excel、Access数据互导         
' SELECT'+
也谈SQL Server表与Excel、Access数据互导         
' 姓名,性别,身份证号'+
也谈SQL Server表与Excel、Access数据互导         
' FROM [excel 8.0;database=' + XlsName + '].[sheet1$]';
也谈SQL Server表与Excel、Access数据互导       ADOQ1.Parameters.Clear;
也谈SQL Server表与Excel、Access数据互导       ADOQ1.ParamCheck:
=false;
也谈SQL Server表与Excel、Access数据互导       ADOQ1.SQL.Text :
= sqltrs;
也谈SQL Server表与Excel、Access数据互导       ADOQ1.Execsql;
也谈SQL Server表与Excel、Access数据互导
也谈SQL Server表与Excel、Access数据互导
//注意中文字段名左右兩邊不能有空格
也谈SQL Server表与Excel、Access数据互导


               

相关文章:

  • 2021-11-07
  • 2022-02-13
  • 2021-09-04
  • 2021-12-06
  • 2021-12-05
  • 2021-06-11
猜你喜欢
  • 2021-11-14
  • 2021-12-25
  • 2021-11-05
  • 2022-12-23
相关资源
相似解决方案