精通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)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)