| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1245 人关注过本帖
标题:把结构相同的一些EXCEL表转入一张DBF表中出现如下的错误提示
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:9 
把结构相同的一些EXCEL表转入一张DBF表中出现如下的错误提示
把结构相同的一些EXCEL表转入一张DBF表中出现如下的错误提示
图片附件: 游客没有浏览图片的权限,请 登录注册

请高手们指教。多谢
搜索更多相关主题的帖子: EXCEL 
2016-06-03 18:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:10 
文件保存路径是如何设置的

坚守VFP最后的阵地
2016-06-03 19:12
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:10 
貌似路径不对
2016-06-03 20:27
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
好象也不是完全是路径,用本人的VFP生成的EXCEL表能导入,如人家的EXCEL表有的能导入有的就出现上述的提示。好象是EXCEL表版本及表中的格式有关,所以在代码开始处提出要求
附上代码,请各位斧正:
yy=MESSAGEBOX("你是否符合下列要求吗?"+chr(13)+"1.在D盘下新建一个目录."+CHR(13)+"2.把『相同结构的Excel表』放在新建目录中."+chr(13)+"3.去掉表的顶端标题行,合适的列宽,行高,取消各种修鉓(如合并单元格等等)及计算公式,"+CHR(13)+"  字段名内不能有空格与标点符号."+CHR(13)+"4.最后把Excel表另存为:Microsoft Excel 5.0/95格式!",4+48+0,'注意以下的提醒!')

IF yy=6


  cdir=GETDIR("d:","请选择存放相同结构的Excel表的目录")
   *CD (cdir)   &&进入相应的目录

    IF EMPTY(cdir)  &&判断有否选择要导入Excel表的目录
      MESSAGEBOX("请选择待导入的EXCEL文档的目录!",0+48,"提示")
      RETURN
    ELSE


 cdir=left(cdir,len(cdir)-1)

   cd (cdir)
 delete file todata.dbf


 lnFiles=Adir(aFile,"*.xls")  

  **VFP 中用代码从EXCEL中导向DBF**

eole=CREATEOBJECT('Excel.application')  &&创建COM连接
eole.DisplayAlerts = .f.   &&不要产生警告提示

eole.Workbooks.open(cdir+"\"+aFile(1,1))   && 这里取绝对路径
eole.Worksheets[1].Activate   &&这里用表名就是类似SHEET1 什么的
eole.visible=.f.  && 隐藏EXCEL进程,另读取数据都在后台进行
eole.ActiveWorkbook.SaveAs(cdir+"\"+"dbfname.dbf",8) &&DBASE3格式为8,11为dbf4
*eole.ActiveWorkbook.SaveAs(".\"+"dbfname.dbf",8)

eole.ActiveWorkbook.saved=.t.  &&不显示保存对话框

eole.save &&保存
eole.Quit   &&退出
RELEASE eole &&释放


 *use aFile(1,1)      
  
   use dbfname.dbf

   copy Structure To todata              
    use todata                             
  For lnI=1 To lnFiles               
    lcStr=(aFile(lnI,1))     
   *wait "正在转换!请稍候.....已转换"+lcstr windows TIMEOUT 1 nowait
  *WAIT "正在转换 "+lcstr WINDOW TIMEOUT 0 NOWAIT AT SROWS()/2,(SCOLS()-LEN("正在转换 "+lcstr))/2
      **捕捉错误1**
   
      err1=.f.
      On error err1=.t.
   
      Append From '&lcStr.' type XL5  && SHEET JUSTSTEM(lcstr)表示哪一个工作表,缺省为第一个工作表,&&xl5为excel 5.0/95版, xls 为excel 2.版,xl8 为97版      
  
      on error
     if err1
        nvalue=MESSAGEBOX('Excel电子表版本不附合转化要求,应是Microsoft Excel 5.0/95格式!,请退出检查!',0+48,"提醒!")
   
        IF nvalue=1
           retu
        Endif
     endif
   **以上为捕捉错误1结束**

    wait "正在转换!请稍候.....已转换:"+lcstr windows TIMEOUT 1 nowait
  Endfor


  inde on EVALUATE(FIELD(1)) to ls

  go bott
  brow
     **捕捉错误2**
     err2=.f.
     On error er2r=.t.
   
    If ALLTRIM(EVALUATE(FIELD(1)))=ALLTRIM(LOWER(FIELD(1))).OR.ALLTRIM(EVALUATE(FIELD(1)))=ALLTRIM(UPPER(FIELD(1))) &&字段1==字段1的值(小写变大写)
**加上语旬
  
   
       Dele all for ALLTRIM(EVALUATE(FIELD(1)))=ALLTRIM(LOWER(FIELD(1))).OR.ALLTRIM(EVALUATE(FIELD(1)))=ALLTRIM(UPPER(FIELD(1)))

       on error
      if err2
        wait wind 'Excel表的第一个字段的字段值有问题,请退出检查!'
       retu
      endif
  **以上为捕捉错误288结束
   
      Pack
  ELSE
    RETU
 ENDIF  &&字段1==字段1的值(小写变大写)判断结束

=MESSAGEBOX("转化、合并完毕!,生成名为:TOTDATA数据库,并请检查库的内容!",0+48,"提醒:转化合并完毕")
 
 ENDIF  &&判断有否选择要导入Excel表的目录结束
ELSE  &&不附合转化要求即退出
  retu
ENDIF  &&判断导入表有否附合要求与if yy=6对应 结束


CLOSE ALL

DELETE FILE  dbfname.dbf
DELETE FILE  *.idx
set talk on
SET SAFE
ON
2016-06-04 11:44
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
安装完整版OFFICE

坚守VFP最后的阵地
2016-06-04 12:45
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用sdta在2016-6-4 12:45:46的发言:

安装完整版OFFICE
从代码何处看出要安装<安装完整版OFFICE>?
2016-06-04 13:41
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
有的电脑能用,有的电脑不能用。
我曾经在没安装完整版的电脑上,运行VFP控制EXCEL代码就出现过类似问题。

坚守VFP最后的阵地
2016-06-04 13:56
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用sdta在2016-6-4 13:56:40的发言:

有的电脑能用,有的电脑不能用。
我曾经在没安装完整版的电脑上,运行VFP控制EXCEL代码就出现过类似问题。
好的,我去查一下是否完全安装。
我的代码有否问题,请指教。特别是保存文件的路径有没有问题?cdir这个是变量,放入下列括内的语句是否正确
eole.Workbooks.open(cdir+"\"+aFile(1,1))   && 这里取绝对路径
eole.ActiveWorkbook.SaveAs(cdir+"\"+"dbfname.dbf",8) &&DBASE3格式为8,11为dbf4


[此贴子已经被作者于2016-6-4 15:32编辑过]

2016-06-04 15:27
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
路径一定要是全路径才行

坚守VFP最后的阵地
2016-06-04 15:51
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用sdta在2016-6-4 15:51:13的发言:

路径一定要是全路径才行
cdir=GETDIR("d:","请选择存放相同结构的Excel表的目录")
cdir=left(cdir,len(cdir)-1)
eole.Workbooks.open(cdir+"\"+aFile(1,1))   && 这里取绝对路径
eole.ActiveWorkbook.SaveAs(cdir+"\"+"dbfname.dbf",8)
我这样取全路径的表示对不对?
请教!多谢
2016-06-04 17:21
快速回复:把结构相同的一些EXCEL表转入一张DBF表中出现如下的错误提示
数据加载中...
 
   



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

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