设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2520|回复: 6
打印 上一主题 下一主题

[帮助] access和excel自由转换

[复制链接]
跳转到指定楼层
1#
发表于 2011-7-10 19:54:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位高手:
如何实现access和excel自由转换:
任意打开一个excel表,选择不同的字段,将其转到access;反之依然。
网上查到的一些都是针对某个数据库固定了字段,没有普遍性。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-7-10 20:47:27 | 只看该作者
本帖最后由 roych 于 2011-7-10 20:51 编辑

Excel导入到Access,可以用VBA程序建立ADO来导入。
如果需要很普遍的话,则改为fields(i) ,用For语句遍历字段(即For i=0 to rst.Fields.count-1)。
不过,Excel表应该属于标准格式(即第一行是字段,且没有合并单元格),——存在表头时,语句则写起来麻烦很多。
。此外数据格式不一致也会有问题,例如Excel标中同一列(即字段)里既有数值又有文本的时候,必然存在部分数据无法导入。

Access导出到Excel和上述方法类似,只不过不用写数据连接字符串而已(一个CurrentProject.Connection就搞定了)。但是ADO写起来也是一件麻烦的事情,所以有时间再做实例。
3#
发表于 2011-7-10 20:48:29 | 只看该作者
直接查询excel表
4#
 楼主| 发表于 2011-7-10 21:02:48 | 只看该作者
盼望版主和元老们尽快出手。
5#
发表于 2011-7-11 04:05:41 | 只看该作者
一望无垠 发表于 2011-7-10 21:02
盼望版主和元老们尽快出手。

Access导出选中字段,红尘已经做了实例,这个我就不再饶舌了:
【源码示例】数据导出时只导出选中字段

但是为什么非选中Excel部分字段导入Access呢?导入全部字段(或者链接表),需要做某些查询时再选择相应字段不可以吗?我觉得在这个问题上,你已经有些钻牛角尖的意思了。

在Access里操作或许相对简单些,然而代码同样相当繁琐。一般来说,可以先全部导入(TransferSpreadSheet)数据到临时表,接下来则参考上面提到的实例来获取字段名,然后再执行生成表查询。——这是由于字段名经常变动的缘故。

尽管这是最简单的做法,但我还是认为这无异于脱裤子放屁。更复杂些的,可以考虑创建Excel对象来获取字段名。

如果在Excel里操作,如果不用链接表的方式(不过这似乎又回到了前面的解决方案了呀),工程就相当大了,至少应该有这几个步骤:

1、建立一列(或一行)单元格以便存放即将需要导入的字段(参考定义名称和有效性设置)。
2、根据用户所选的字段构建SQL语句,利用ADO把数据存储在Excel的某个临时工作表上。
3、创建Access组件,删除Access中的临时表(如果你不希望每次都生成一个数据表以致数据库体积不断膨胀的话)。
4、在Access中创建表(这是必须的,因为每次字段都不同嘛。如果不创建执行追加导入语句将出错)。这是整个步骤最繁琐的地方,需要引用DAO或者ADOX。——目的在于获取字段名称和类型(文本、日期、双精度数值……),这是因为每次字段都在发生变化的缘故。
5、把Excel中的临时表数据追加到Access刚刚创建的表中。
6#
 楼主| 发表于 2011-7-11 11:33:38 | 只看该作者
又回到了原点。
7#
发表于 2011-7-11 15:54:52 | 只看该作者
本帖最后由 roych 于 2011-7-11 16:00 编辑

本来就该如此。
如果是标准格式数据表,完全可以连接到Access或者全部导入到Access,再根据实际的字段需要,来做追加查询或者生成表查询等等。
为这个,俺昨天还对代码进行了很长一段时间的调试。结果发现,除了链接表和全部导入之外,真的没有更好的办法。——当然,导入表之后,然后选中字段做查询则是比较简单的事情了。——不过这似乎还是返回了红尘的那个实例。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-15 01:36 , Processed in 0.083806 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表