标题:prg中更改excel的sheet名出现的问题
只看楼主
martianfly
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-9-28
 问题点数:0 回复次数:5 
prg中更改excel的sheet名出现的问题
之前在论坛上学到了好多,感谢各位大神!
问题是这样的
 SELECT 2
  USE wx
  SELECT 1
 USE dw3
 DO whil NOT EOF()
  myxmc=yxmc
  myxmc1=yxmc1
  SELECT 2
   COPY TO &myxmc1 FOR myxmc=yxmc TYPE XL5
    OEXCEL = CREATEOBJECT('Excel.application')
    OEXCEL.WORKBOOKS.OPEN(SYS(5)+SYS(2003)+"\&myxmc1")
    oExcel.Sheets(myxmc1).NAME = "数据"
    oExcel.ActiveWorkBook.Save
    OEXCEL.WORKBOOKS.CLOSE
    OEXCEL.QUIT
    RELEASE OEXCEL
   SELECT 1
    SKIP   
  ENDDO
wx.DBF是一张大表,dw3是为了根据某一字段内容做的零时表,dw3中有2个字段,yxmc是大表中需要导出的字段内容,yxmc1是导出xls命名的方式,默认导出的sheet名和xls命名的一样,
现在是要在导出后更改sheet名为数据,因为yxmc1中的内容长短不一,在寻路径的时候会出现长空格,会提示xxxx     .xlsx不存在,目录下生成的xls文件命名中没有空格,想请问各位如何解决,谢谢!
搜索更多相关主题的帖子: excel 
2016-10-27 15:59
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
以下是引用martianfly在2016-10-27 15:59:45的发言:

现在是要在导出后更改sheet名为数据,因为yxmc1中的内容长短不一,在寻路径的时候会出现长空格,会提示xxxx     .xlsx不存在,目录下生成的xls文件命名中没有空格,想请问各位如何解决,谢谢!

用ALLTRIM()函数压缩空格。
2016-10-27 16:07
martianfly
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-9-28
得分:0 
回复 2楼 wangzhiyi
感谢,我在OEXCEL.WORKBOOKS.OPEN(ALLTRIM(SYS(5)+SYS(2003)+"\&myxmc1"))
          oExcel.Sheets(ALLTRIM(myxmc1)).NAME = "数据"  
加了alltrim后变的很不稳定,出现OLE报错,未知的com状态代码,成功生成1,2个之后就不行了,excel假死,重启也无效,我一共生成40多个文件
系统环境win10+office2016+vfp9.0
2016-10-27 16:59
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
1、用Addbs(SYS(5)+SYS(2003)) 代替 Alltrim
2、用一个字符串变量先过渡,例如: strFname = Addbs(SYS(5)+SYS(2003)) + myxmc1
然后,OEXCEL.WORKBOOKS.OPEN(strFname)
2016-10-28 11:24
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
得分:0 
以下是引用martianfly在2016-10-27 15:59:45的发言:

之前在论坛上学到了好多,感谢各位大神!
问题是这样的
 SELECT 2
  USE wx
  SELECT 1
 USE dw3
 DO whil NOT EOF()
  myxmc=yxmc
  myxmc1=yxmc1
  SELECT 2
   COPY TO &myxmc1 FOR myxmc=yxmc TYPE XL5
    OEXCEL = CREATEOBJECT('Excel.application')
    OEXCEL.WORKBOOKS.OPEN(SYS(5)+SYS(2003)+"\&myxmc1")
    oExcel.Sheets(myxmc1).NAME = "数据"
    oExcel.ActiveWorkBook.Save
    OEXCEL.WORKBOOKS.CLOSE
    OEXCEL.QUIT
    RELEASE OEXCEL
   SELECT 1
    SKIP   
  ENDDO
wx.DBF是一张大表,dw3是为了根据某一字段内容做的零时表,dw3中有2个字段,yxmc是大表中需要导出的字段内容,yxmc1是导出xls命名的方式,默认导出的sheet名和xls命名的一样,
现在是要在导出后更改sheet名为数据,因为yxmc1中的内容长短不一,在寻路径的时候会出现长空格,会提示xxxx     .xlsx不存在,目录下生成的xls文件命名中没有空格,想请问各位如何解决,谢谢!

myxmc=yxmc
myxmc1=yxmc1
改这个地方,
myxmc=alltrim(yxmc)
myxmc1=alltrim(yxmc1)
2016-10-28 14:20
martianfly
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-9-28
得分:0 
回复 5楼 wangzhiyi
好的,感谢,不过后来发现在win7+office2007下运行ok,win10看来不是很稳定,已经解决了。
2016-10-28 16:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470345-1-1.html




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

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