Office中国论坛/Access中国论坛

标题: 一句查询代码实现Excel数据导入导出 [打印本页]

作者: 红尘如烟    时间: 2010-10-13 11:58
标题: 一句查询代码实现Excel数据导入导出
本帖最后由 红尘如烟 于 2010-12-12 17:55 编辑

导入数据(导入数据时第一行必须是字段名):
  1. DoCmd.RunSQL "INSERT INTO 表名 SELECT * FROM [Excel 8.0;DATABASE=E:\桌面\测试数据.xls].[Sheet1$]"
  2. DoCmd.RunSQL "INSERT INTO 表名 SELECT * FROM [Sheet1$] IN 'E:\桌面\测试数据.xls'[EXCEL 8.0;]"
  3. DoCmd.RunSQL "INSERT INTO 表名 SELECT * FROM [Sheet1$] IN 'E:\桌面\测试数据.xls' 'EXCEL 8.0;'"
复制代码

导出数据:
  1. DoCmd.RunSQL "SELECT * INTO [Excel 8.0;DATABASE=E:\桌面\测试数据.xls].[Sheet1] FROM 表名"
  2. DoCmd.RunSQL "SELECT * INTO [Sheet1] IN 'E:\桌面\测试数据.xls'[EXCEL 8.0;] FROM 表名"
  3. DoCmd.RunSQL "SELECT * INTO [Sheet1] IN 'E:\桌面\测试数据.xls' 'EXCEL 8.0;' FROM 表名"
复制代码

要点:导入时工作表名称后面要加$(如Sheet1$),而导出时却不能加(如Sheet1),另外示例代码中的Sheet1可以是其它名称(如“测试数据”)。
最初的写法: [Excel 8.0;DATABASE=E:\桌面\测试数据.xls].Sheet1   这个是参考帮助文档写的,经过仔细测试验证,的确存在问题,所以建议大家不要再用了,看样子帮助中的东西也不能全信,问题不少

在此感谢网友“疯狂的石头”的提醒!

作者: ui    时间: 2010-10-13 13:53
很详细的解释,学到一招,谢谢
作者: xinbao    时间: 2010-10-13 15:28
谢谢分享! 不错的技巧
作者: yangjj    时间: 2010-10-13 21:54
很好的技巧!
作者: wenjun4    时间: 2010-10-13 23:24
谢谢分享! 不错的技巧
作者: yangjj    时间: 2010-10-17 17:04
试试看,正在做这方面的程序!希望能好用,如何判断文件是EXCEL2003的呢?如果不是2003,应该要提示啊!
作者: todaynew    时间: 2010-10-17 17:32
导入数据(导入数据时第一行必须是字段名):
DoCmd.RunSQL "INSERT INTO 表名 SELECT * FROM [Excel 8.0; ...
红尘如烟 发表于 2010-10-13 11:58

这个问题我想要解决的时间超过了两年,没想到核心在于一个$号上。
可以把这个问题简化为条件查询:
SELECT * FROM [Excel 8.0;DATABASE=E:\桌面\测试数据.xls].[Sheet1$]"
然后由这个查询再可考虑追加、更新、数据集、域函数等等方面的运用。




作者: yuly    时间: 2010-10-19 20:51
这个实用三,,简便
作者: yuly    时间: 2010-10-19 21:00
ACCESS 2010 不行呀!!!有两种情况,一中说EXCEL中存在这个表,二是表不存在,但结果就是不允许导出到EXCEL中
作者: yuly    时间: 2010-10-19 21:00
ACCESS 2010 不行呀!!!有两种情况,一中说EXCEL中存在这个表,二是表不存在,但结果就是不允许导出到EXCEL中
作者: lkkl66    时间: 2010-10-20 00:45
本帖最后由 lkkl66 于 2010-10-20 01:01 编辑

实际操作出现了问题哦
导出部分:
《DoCmd.RunSQL "SELECT * INTO [Excel 8.0;DATABASE=E:\桌面\测试数据.xls].[Sheet1$] FROM 表名"》
其中好像 《 Sheet1$》→还是改成《 Sheet1》→不能带此符号《$
否则出现《Sheet1$》不是一个有效名的提示!!!

导入部分:——  可以的
                                                            不知何故?

作者: ElfK    时间: 2010-10-20 13:09
很详细的解释,学到一招,谢谢
作者: arielzhang130    时间: 2010-10-21 10:20
学习 学习

作者: toad13    时间: 2010-10-22 14:09
弄弄试试,看看好不好用
作者: maxln5555    时间: 2010-11-4 16:41
NB 就要这个
作者: wufeng980114    时间: 2010-11-4 20:41
非常感谢分享
作者: xie62    时间: 2010-11-7 09:08
谢谢分享!
作者: cnffmso    时间: 2010-12-12 10:46
谢谢分享! 不错的技巧
作者: wangxy689    时间: 2011-3-23 00:15
我发现按照老师说的导入模[attach]45159[/attach]式导入后,ID 的号码发生了很大的变化,不是从1开始的。
我把我的程序代码也贴上,请红尘如烟老师关注一下。
Private Sub Command23_Click()
'DoCmd.RunSQL "INSERT INTO  SELECT * FROM [Excel 8.0;DATABASE=E:\桌面\测试数据.xls].[Sheet1$]"
DoCmd.RunSQL "INSERT INTO 源数据 SELECT * FROM [数据源$] IN 'D:\测试数据.xls'[EXCEL 8.0;]"
'DoCmd.RunSQL "INSERT INTO 表名 SELECT * FROM [Sheet1$] IN 'E:\桌面\测试数据.xls' 'EXCEL 8.0;'"
End Sub


作者: gxy1000    时间: 2011-4-2 15:01
学习学习
作者: dlchenfeng    时间: 2011-4-14 19:06
都是高手.
作者: kingdog    时间: 2011-4-14 19:36
学习中!!!!!!!
作者: CoolBugs    时间: 2011-4-15 16:37
有见解
作者: szyewj    时间: 2011-5-10 23:35
这个实用三,,简便
作者: huxinhua    时间: 2012-1-10 16:10
谢谢分享!
作者: changweiren    时间: 2012-1-13 23:21
一句查询代码实现Excel数据导入导出
作者: shuix    时间: 2012-4-4 10:34
感谢分享
作者: xhdd    时间: 2012-4-7 17:26
学到一招,谢谢
作者: 一指茶香    时间: 2012-5-9 18:24
唉呀在网上搜索了几天了,正在找这个呢,试下了下可以用呢,初学也看不懂什么意思。只能先生搬硬套了
作者: william_yao    时间: 2012-5-10 11:07
学习了!!
作者: itdesigner    时间: 2015-3-28 21:00
很实用,谢谢~
作者: 十三    时间: 2015-5-14 17:05
代码 不错!
作者: purplerose    时间: 2015-7-25 21:53
现今的书,出错率太高了,所以不能怪看书的人{:soso_e120:}
作者: WFH6898    时间: 2015-11-29 09:47
深奥啊
作者: 522650696    时间: 2016-4-26 20:13
感谢分享,要去试试
作者: p51219    时间: 2016-7-7 22:29
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3