精通MS-ACCESS SQL之基础篇(17)
时 间:2017-12-07 10:12:09
作 者:Big Young ID:252 城市:襄阳
摘 要: 用ACCESS SQL语句实现对EXCEL格式的数据表的导入与导出。
正 文:
第十七节 EXCEL格式的数据表的导入与导出
在实际的工作中,EXCEL相比ACCESS更流行,很多人喜欢使用EXCEL,把它当成小数据库使用,交换数据时也经常是EXCEL格式。针对这样的现实,我们在用ACCESS开发程序的过程中或办公的过程中经常会在ACCESS与EXCEL之间来回交换数据,下面我们就来学习一下如何通过SQL来进行两者之间的数据交换。
ACCESS与EXCEL间的数据交换主要有两个方面,一是将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.0,EXCEL97-2003用的格式是8.0,EXCEL2007以后使用的格式是12.0。EXCEL 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交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)