| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2958 人关注过本帖
标题:求助:关于EXCEL表导入数据库中?!!!
只看楼主 加入收藏
nhygm888
Rank: 2
等 级:论坛游民
威 望:1
帖 子:186
专家分:42
注 册:2008-7-20
结帖率:64.71%
收藏
 问题点数:0 回复次数:16 
求助:关于EXCEL表导入数据库中?!!!
一个文件夹中有5000多个EXCEL表  我想把他们导入到数据库中
我用adir()建立个数组  然后循环打开EXCEL表 逐个导入。现在出现点问题 大家帮我看看怎么回事啊??

ncount=0
set path to D:\在职信息删除\信息删除电子文档备份
gndbcnumber = adir(ml,'*.xls')
for ncount = 1 to gndbcnumber && 依据数据库的个数循环
selectfile=ml(ncount,1)
thisform.jdt4.visible=.T.
loXls = CREATEOBJECT("excel.application")
bookExcel = loXls.APPLICATION.Workbooks.OPEN(selectfile)
nrows=bookExcel.Worksheets('Sheet1')
UsedRange =nrows.UsedRange
r=UsedRange.ROWS.COUNT
c=UsedRange.COLUMNS.COUNT
。。。。。。。。

问题gndbcnumber总是0 好象是路径不对 没有找到EXCEL表的文件夹
谁帮我 一下  谢谢   另外 还有别的方法吗???
     

[ 本帖最后由 nhygm888 于 2009-11-7 10:16 编辑 ]
搜索更多相关主题的帖子: EXCEL 数据库 
2009-11-07 10:11
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
收藏
得分:0 
adir()用的是默认路径,你用 set path 设置搜索路径是不起作用的。
应该用 SET DEFAULT TO "D:\在职信息删除\信息删除电子文档备份" 设置默认路径。
另外 gndbcnumber = adir(ml'*.xls') 中的""应改为","。
2009-11-07 10:33
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
请问楼2,可以这样设置吗?
 SET DEFAULT TO "\在职信息删除\信息删除电子文档备份"
还有,如果不需打开EXCEL文件,可以这样导入吗?
ncount=0
set path to" D:\在职信息删除\信息删除电子文档备份"
gndbcnumber = adir(ml,'*.xls')
use cjk
for ncount = 1 to gndbcnumber && 依据数据库的个数循环
selectfile=ml(ncount,1)
appen from selectfile type xls
endfor
use



[ 本帖最后由 TZTJ 于 2009-11-7 15:55 编辑 ]
2009-11-07 15:47
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
可以用append命令导入EXCEL表,但在导入时会将标题行也导入了表中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-07 20:08
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
问题关键在文件夹中EXCEL各个文件名怎样获取呢?

[ 本帖最后由 TZTJ 于 2009-11-8 10:13 编辑 ]
2009-11-08 00:00
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
收藏
得分:0 
for i=1 to gndbcnumber
?ml(i,1)
next
2009-11-08 14:10
nhygm888
Rank: 2
等 级:论坛游民
威 望:1
帖 子:186
专家分:42
注 册:2008-7-20
收藏
得分:0 
谢谢   是路径的问题 已经弄好了

现在用出了个新的问题:我把4000多个EXCEL表 都保存在ml数组中 每次 循环取一个EXCEL表的文件名 打开EXCEL表读取他们的记录 保存到数据库中,然后在关闭EXCEL表。在读取150多个EXCEL表时  出错了。打开进程管理器时发现 进程中有好多EXCEL.EXE进程,我想应该是 我打开EXCEL表后没有关闭 又打开了下一个EXCEL表的情况吧。不知道是不是这个原因,请高手帮我看看。是个原因怎么解决呢 ????
thisform.jdt4.visible=.T.
ncount=1
gndbcnumber = adir(ml,'D:\在职信息删除\信息删除电子文档备份\*.xls') && 创建数组
for ncount = 1 to gndbcnumber && 依据数据库的个数循环
selectfile1=ml(ncount,1)
selectfile="D:\在职信息删除\信息删除电子文档备份\"+selectfile1
loXls = CREATEOBJECT("excel.application")
bookExcel = loXls.APPLICATION.Workbooks.OPEN(selectfile) &&打开EXCEL表
nrows=bookExcel.Worksheets('Sheet1')
UsedRange =nrows.UsedRange
r=UsedRange.ROWS.COUNT
c=UsedRange.COLUMNS.COUNT
loXls.visible=0
thisform.jdt4.value=int(ncount/(r/100))
i=1
a=0
dwbh1=substr(allt(nrows.cells(4,2).value),12,14)
dwmc1=substr(allt(nrows.cells(4,7).value),12,30)
grbh1=substr(allt(nrows.cells(4,15).value),11,10)
xm1= substr(allt(nrows.cells(5,2).value),8,8)
sfz1= substr(allt(nrows.cells(5,7).value),16,18)
dyrq1=substr(allt(nrows.cells(5,15).value),12,8)
ym1=nrows.cells(r,2).value
for i=9 to r

if nrows.cells(i,23).value="在职" .or. nrows.cells(i,23).value="个体"
jfsq1 =str(nrows.cells(i,2).value,6)
jflx1 = nrows.cells(i,3).value
grjfjs1=nrows.cells(i,4).value
grjfbj1=nrows.cells(i,5).value
grjflx1=nrows.cells(i,6).value
grjfbs1=allt(nrows.cells(i,9).value)
if grjfbs1="欠缴"
grdzrq1=""
else
grdzrq1=str(nrows.cells(i,10).value,8)
endi
dwjfbj1=nrows.cells(i,11).value
dwjflx1=nrows.cells(i,12).value
dwjfbs1=allt(nrows.cells(i,13).value)
if dwjfbs1="欠缴"
dwdzrq1=""
else
dwdzrq1=str(nrows.cells(i,14).value,8)
endi
hzbj1=nrows.cells(i,17).value
hzlx1=nrows.cells(i,18).value
hzbs1=nrows.cells(i,20).value
if hzbs1="欠缴"
hzrq1=""
else
hzrq1=str(nrows.cells(i,22).value,8)
endi
jfrylb1=nrows.cells(i,23).value

INSERT INTO jfls(grbh,sfz,xm,dwbh,dwmc,jfsq,jflx,grjfjs,grjfbj,grjflx,grjfbs,grdzrq,dwjfbj,dwjflx,dwjfbs,dwdzrq,hzbj,hzlx,hzbs,hzrq,jfrylb,dyrq,ym) VALUES (grbh1,sfz1,xm1,dwbh1,dwmc1,jfsq1,jflx1,grjfjs1,grjfbj1,grjflx1,grjfbs1,grdzrq1,dwjfbj1,dwjflx1,dwjfbs1,dwdzrq1,hzbj1,hzlx1,hzbs1,hzrq1,jfrylb1,dyrq1,ym1)
INSERT INTO jfls1(grbh,sfz,xm,dwbh,dwmc,jfsq,jflx,grjfjs,grjfbj,grjflx,grjfbs,grdzrq,dwjfbj,dwjflx,dwjfbs,dwdzrq,hzbj,hzlx,hzbs,hzrq,jfrylb,dyrq,ym) VALUES (grbh1,sfz1,xm1,dwbh1,dwmc1,jfsq1,jflx1,grjfjs1,grjfbj1,grjflx1,grjfbs1,grdzrq1,dwjfbj1,dwjflx1,dwjfbs1,dwdzrq1,hzbj1,hzlx1,hzbs1,hzrq1,jfrylb1,dyrq1,ym1)
endi
endf
loXls.Quit   
RELEASE loXls
&&这里没有关闭EXCEL表??

endfor
thisform.jdt4.value=0
2009-11-08 14:17
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
试试用
loXls.workbooks.close
loXls.Quit

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2009-11-08 14:54
nhygm888
Rank: 2
等 级:论坛游民
威 望:1
帖 子:186
专家分:42
注 册:2008-7-20
收藏
得分:0 
还是不行啊 导入到145个EXCEL表的时候 程序运行到loXls = CREATEOBJECT("excel.application")的时候 就出错了
2009-11-09 07:55
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
EXCEL对象创建一次即可,每打开一工作簿,处理完关闭,接着可打开下一个工作簿

VFP
2009-11-09 08:49
快速回复:求助:关于EXCEL表导入数据库中?!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018042 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved