Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

精通MS-ACCESS SQL之基础篇(17)

时 间:2017-12-07 10:12:09
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用ACCESS SQL语句实现对EXCEL格式的数据表的导入与导出。
正 文:

第十七节 EXCEL格式的数据表的导入与导出

在实际的工作中,EXCEL相比ACCESS更流行,很多人喜欢使用EXCEL,把它当成小数据库使用,交换数据时也经常是EXCEL格式。针对这样的现实,我们在用ACCESS开发程序的过程中或办公的过程中经常会在ACCESSEXCEL之间来回交换数据,下面我们就来学习一下如何通过SQL来进行两者之间的数据交换。

ACCESSEXCEL间的数据交换主要有两个方面,一是将ACCESS数据库中的表导出成EXCEL格式的工作表,另一是将EXCEL工作簿中的工作表导入到ACCESS的库表中,也就是说两种情况下,EXCEL工作表分别作为目标表或源表。为了减小篇幅,我们只说明EXCEL工作表作为源表的情况,另一种用法大同小异,大家可以自己测试,也算留给大家的作业吧。

一、导入EXCEL工作表的SQL语法

FROM  sheet1$  IN  {path | ["path" "type"] | ["" [type; DATABASE = path]]}

SQL语法中相关部分的说明

部分

说明

Sheet1$

将要被导入的EXCEL工作表的名字。

Path

包含要被导入工作表的工作簿的全路径,包括工作簿名。

Type

外部数据库的类型,这里应是EXCEL.

这里需要说明的是,外部数据库类型中的EXCEL有多种类型,有时期的版本5.0EXCEL97-2003用的格式是8.0EXCEL2007以后使用的格式是12.0EXCEL 8.0及以前的都是专用的二进制格式,从12.0开始分成了几种,一种是XML格式的,扩展名为“.xlsx”,另一种是带宏的XML格式的EXCEL文档,其扩展名为“.xlsm”,还有一种是二进制格式的文档,扩展名是“.xlsb”,这些操作上略有不同,不过EXCEL数据驱动是新版本能兼容老版本的,所以我们就只以新版本的EXCEL 12.0为例来说明了。

二、导入XML格式(*.xlsx)的EXCEL工作表的SQL语法

我们这里有三个工作内容相同但保存的工作簿格式不同的EXCEL文档,如图17-1所示:

17-1:三种不同格式存储的EXCEL工作簿

我们先来学习一下如何导入XML格式的,就是名为学生成绩1.xlsx”的文档中的表,我们先用EXCEL打开浏览一下内容,工作表的名字为学生成绩示例,数据内容如图17-2所示:

17-2:“学生成绩示例工作表数据内容

其它几个工作簿中的工作表数据内容及名字也是一样的,后面就不再说明了。

下面我们新建一个示例数据库,创建一个新SQL查询,并切换到SQL编辑视图,输入以下的SQL语句:

Select * INTO 学生成绩

FROM [学生成绩示例$]

IN 'D:\SQL for ACCESS\学生成绩1.xlsx'

[EXCEL 12.0 XML;];

执行后就会在当前数据库中生成一个新的学生成绩的表,打开查看效果如图17-3所示:

17-3:导入EXCEL工作表生成的表

其实SQL语句可以有多种写法,如:

Select * INTO 学生成绩

FROM [学生成绩示例$]

IN ''

[EXCEL 12.0 XML;HDR=yes;DATABASE=D:\SQL for ACCESS\学生成绩1.xlsx];

或:

Select * INTO 学生成绩

FROM [EXCEL 12.0 XML;HDR=yes;DATABASE=D:\SQL for ACCESS\学生成绩1.xlsx;].[学生成绩示例$];

这些不同的写只是书写格式的不同,执行后完成的任务是一样的,大家可以根据喜好自己选择。

三、导入带有宏的EXCEL格式(.xlsm)的工作表

下面我们来导入带有宏的EXCEL文档中的工作,其SQL语法示例如下:

Insert INTO 学生成绩

Select *

FROM [学生成绩示例$]

IN 'D:\SQL for ACCESS\学生成绩1.xlsm'[EXCEL 12.0 MACRO;HDR=yes];

执行后如图17-4所示的效果,最终数据表中数据行效果与前例相同,这里就不再给出了。

17-4:从带宏的EXCEL工作簿中导入工作表

导入带宏的EXCEL格式文档中的工作表的SQL语句还可以有这样的写法与格式:

其一:

Insert INTO 学生成绩

Select *

FROM [EXCEL 12.0 MACRO;HDR=yes;DATABASE=D:\SQL for ACCESS\学生成绩1.xlsm;].[学生成绩示例$];

其二:

Insert INTO 学生成绩

Select *

FROM [学生成绩示例$]

IN '' [EXCEL 12.0 MACRO;HDR=yes;DATABASE=D:\SQL for ACCESS\学生成绩1.xlsm;];

 

四、利用SQL导入二进制格式(.xlsb)的EXCEL工作表

有了前面的基础,这个学起来就比较简单了,它的基本语法与前面的差不多,所不同的只是在外部数据库的类型上改成了“.xlsb”的文档,语法如下:

Insert INTO 学生成绩

Select *

FROM [EXCEL 12.0;

      HDR=yes;

      MEX=1;

      DATABASE=D:\SQL for ACCESS\学生成绩1.xlsb;].[学生成绩示例$];

执行后会出现如图17-5所示的效果:

17-5:执行追加查询后的效果

这表明语句是正确的,点击按钮后就会向表中追加数据行了,追加后的“学生成绩表与前面的相同,这里不是赘述了。其它几种格式的语法如下:

其一:

Insert INTO 学生成绩

Select *

FROM [学生成绩示例$]

IN ''

[EXCEL 12.0;

HDR=yes;

MEX=1;

DATABASE=D:\SQL for ACCESS\学生成绩1.xlsb;];

其二:

Insert INTO 学生成绩

Select *

FROM [学生成绩示例$]

IN 'D:\SQL for ACCESS\学生成绩1.xlsb'

[EXCEL 12.0;

HDR=yes;

MEX=1;];

前面已说过,EXCEL 2007以后的版本兼容以前的老版本,对于以前的格式可以同样操作,不再具体一一列出了。如果用户还在使用EXCEL 2003及以前的版本,只需要要将前面语法示例中的“[EXCEL 12.0;HDR=yes;MEX=1;DATABASE=D:\SQL for ACCESS\学生成绩1.xlsb;]”这个驱动字符串修改一下,变成“[EXCEL 8.0;HDR=yes;MEX=1;DATABASE=D:\SQL for ACCESS\学生成绩1.xls;]”就可以了。



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助