| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 730 人关注过本帖
标题:请教高手啊,一天了都没想出解决办法
取消只看楼主 加入收藏
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:5 
请教高手啊,一天了都没想出解决办法
在VFP中调用EXCEL,想在同一行中取用连续单元格,第一个单元格列号确定,如A1,最后一个单元格列号不确定,随变量X的取值而变化,在编程中如何用一个命令表示(不想用循环,太慢)

不知大家有没有好方法,先谢了!
搜索更多相关主题的帖子: EXCEL 如何 
2013-12-20 17:01
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
根据需要从DBF随机选取若干字段的数据导入EXCEL中,所以,在导入时最后单元格的列号不能确定。
数据导入已经实现,没有问题。我只是想给导入的数据行单元格设置边框,但不想一个单元格一个单元格设置,而是一行一行设置。
比如:我根据需要选取的DBF字段数存入变量X,根据条件要导入EXCEL的记录数存入变量Y
Excel第一行导入的是字段名(标题行),从第二行导入数据
i=0
scan
  if 导入条件
    i=i+1
    for j=1 to X
      oExcel.ActiveSheet.Cells(i+1,i).Borders(1).LineStyle = 1
      oExcel.ActiveSheet.Cells(i+1,i).Borders(2).LineStyle = 1
      oExcel.ActiveSheet.Cells(i+1,i).Borders(3).LineStyle = 1
      oExcel.ActiveSheet.Cells(i+1,i).Borders(4).LineStyle = 1
    endfor
  endif
endscan
以上是我目前用的方法,是一个格一个设置,就是影响运行速度。
我想把这个设置放在for循环外,给一行连续单元格设置边框,这个连续单元格数目不确定,即用X来代表的。
在Excele中用Vba编程时,可表示为Range(Cells(i+1,1),Cells(i+1,X)),但在VFP中这是错误的,不知正确的应该
如何写。

[ 本帖最后由 iamhyf 于 2013-12-20 22:06 编辑 ]
2013-12-20 20:13
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
参考网上搜到办法,已经解决了
我数据表中可用的字段总共有76个
设置一个字符串ColNumArr
ColNumArr="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASA"+;
         TAUAVAWAXAYAZBABBBCBDBEBFBGBHBIBJBKBLBMBNBOBPBQBRBSBTBUBVBWBX"
根据选取的字段个数X从ColNumArr中得到导出数据最后一列的列号:
ColNum=ALLTRIM(SUBSTR(ColNumArr,X*2-1,2))
再根据导出数据所在的Excel行号,对整行数据进行边框设置:
oExcel.ActiveSheet.Range("A"+ALLTRIM(STR(J+1))+":"+ColNum+ALLTRIM(STR(J+1))).Borders(1).LineStyle = 1
oExcel.ActiveSheet.Range("A"+ALLTRIM(STR(J+1))+":"+ColNum+ALLTRIM(STR(J+1))).Borders(2).LineStyle = 1
oExcel.ActiveSheet.Range("A"+ALLTRIM(STR(J+1))+":"+ColNum+ALLTRIM(STR(J+1))).Borders(3).LineStyle = 1
oExcel.ActiveSheet.Range("A"+ALLTRIM(STR(J+1))+":"+ColNum+ALLTRIM(STR(J+1))).Borders(4).LineStyle = 1

自己赞一个
2013-12-20 21:48
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
是同一个问题,在1楼没说清楚。
谢5楼、6楼的回复,问题是行数和列数都不能预先确定,要根据程序运行中变量的值进行设置。其实最简单的是导出数据后在EXCEL中直接设置。我不是为了程序的完美吗?哈哈。
2013-12-20 21:54
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 
嗯,是的,数据导出后,记录累计数Y确定了,列号通过以上的方法也确定了。
数据导完后,统一进行设置,代码放在SCAN...ENDSCAN之后,并改成:
oExcel.ActiveSheet.Range("A1:"+ColNum+ALLTRIM(STR(Y+1))).Borders(1).LineStyle = 1
oExcel.ActiveSheet.Range("A1:"+ColNum+ALLTRIM(STR(Y+1))).Borders(2).LineStyle = 1
oExcel.ActiveSheet.Range("A1:"+ColNum+ALLTRIM(STR(Y+1))).Borders(3).LineStyle = 1
oExcel.ActiveSheet.Range("A1:"+ColNum+ALLTRIM(STR(Y+1))).Borders(4).LineStyle = 1
2013-12-20 22:05
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
收藏
得分:0 

UsedRange.Cells.Borders
这个真是头一次知道啊,学习了,多谢!!!
2013-12-20 22:35
快速回复:请教高手啊,一天了都没想出解决办法
数据加载中...
 
   



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

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