| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 857 人关注过本帖
标题:我是新手,想编个程序简化工作,征求各位大侠建议
只看楼主 加入收藏
ll3316693
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-12-5
结帖率:0
收藏
已结贴  问题点数:20 回复次数:8 
我是新手,想编个程序简化工作,征求各位大侠建议
我在办公室工作,现在的一项工作是把各部门报上来的表格(word、excel他们都有用的)汇成一个总表(excel)。时间长了,有些烦,决定自己用VF来编个程序帮忙。思路如下:
第一步,试图自动改变各部门报上来的表的样式,以符合转化为DBF的要求。
第二步,通过表的操作,将符合要求的数据汇总
第三步,自动形成符合要求的电子表格。
现在准备先走第一步,各位大侠们,提点建议好吗,小弟是新手,请多指教。
搜索更多相关主题的帖子: 征求 
2010-12-05 12:19
ll3316693
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-12-5
收藏
得分:0 
小弟多处查找,找到一个代码,很好用,可惜,因各部门报上来表结构不同,导致无法使用,所以才想到用啥法子自动调整表的结构,希望大侠们给些建议。
close all
set safety off
set default to 'e:\'&&设置默认目录
messagebox('请选择要导入的XLS文件'+chr(13)+;
'注意表格不要有格式,首行的命名符合规则';
+chr(13)+'只把第一行做为字段','提示')
ss=getfile('xls')&&打开选择文件对话框,并赋值
if isblank(ss)
return
endif
myexcel=createobject('excel.application')&&创建EXCEL对象
*myexcel.visible=.t.
bookexcel=myexcel.workbooks.open(ss)&&打开选择的文件
i=1
***************获得表的可用sheet*************************************
for each omyvar in myexcel.sheets
    dimension a(i)
    a(i)=omyvar.name
    i=i+1
next omyvar
******************************************************
nrows=bookexcel.worksheets(a(1))&&设置第一个表为工作表
UsedRange =nrows.UsedRange&&设置工作区域
***************把第一行的数据赋值给数组b,一会删除第一行,便于导入*****
ma=usedrange.columns.count&&返回列的总数
dimension b(ma)
for i=1 to ma
b(i)=myexcel.cells(1,i).value
next
******************************************************
myexcel.Worksheets(a(1)).Activate
myexcel.activesheet.rows(1).select&&选中第一行
myexcel.Selection.EntireRow.Delete&&删除选中的行
myexcel.Worksheets(a(1)).select
*********检查d:\hh.xls是否存在,若存在,删除***********
IF FILE('d:\hh.xls')
DELETE FILE d:\hh.xls
ENDIF
*********************************
myexcel.ActiveWorkbook.SaveAs('d:\hh.xls')&&文件另存为
myexcel.ActiveWorkbook.saved=.t.&&不保存修改
myexcel.workbooks.close&&关闭工作区不提示保存
myexcel.quit&&excel退出
*release myexcel
*******************
import from d:\hh.xls type xl5&&导入到默认目录下的hh.dbf表中
DELETE FILE d:\hh.xls&&删除表
***********给表字段重命名**************************
use hh
ma=fcount()
dimension c(ma)
for la=1 to ma
c(la)=field(la)
next
for la=1 to ma
?la,c(la),b(la)
alter table hh rename &c(la) to &b(la)
next
*****************************************
messagebox('已成功将表导入到E:\hh.dbf','提示')
close all
2010-12-05 12:25
xmlz
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:294
专家分:1392
注 册:2010-8-29
收藏
得分:4 
二楼的代码已经实现从Excel到DBF的自动转换了。
因为你要接收的Excel的格式是预知的,所以也可以自己先根据Excel文件建好表,再将Excel文件Append到表(Append from xx.xls xl5).

自动修改表结构,也就是Alter table了
2010-12-06 09:10
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:4 
最好制定一个结构合理的Excel格式报表,让各部门按这个格式报表。
如果做不到,只能自己建一个.dbf,然后将各部门Excel报表按照这个.dbf的字段进行修改调整,使之能正确读取。这样就麻烦多了……

相互学习,互相交流,共同提高。
2010-12-06 09:54
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
收藏
得分:4 
如果要将WORD转换成相应的表格,我感觉VF无能为力!

2010-12-06 13:48
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:4 
既然楼主是在汇总这些报表,哪完全可以要求各部门用统一的EXCEL格式填报报表。数据源问题解决了,哪汇总将迎刃而解。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2010-12-06 20:23
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:4 
回复 楼主 ll3316693
思路很好,只是第一步是关键(需要协调能力,如果你是官就好办多了),其他无虑!。

★★★★★为人民服务★★★★★
2010-12-07 08:53
ll3316693
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-12-5
收藏
得分:0 
不好整啊,咱不是官啊,人家不按你的要求报表啊
2010-12-07 10:50
ll3316693
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-12-5
收藏
得分:0 
小弟有个新思路,就是先把电子表格转存为DBF,然后用字段寻找我需要内容在的那一行,然后用alter命令把所需内容那一行改为字段名,其上的行删去。大侠们,觉得此思路可行吗?
2010-12-07 11:09
快速回复:我是新手,想编个程序简化工作,征求各位大侠建议
数据加载中...
 
   



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

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