注册 登录
编程论坛 VFP论坛

将多个excel表中sheet导入dbf中

杂七杂八 发布于 2022-06-29 18:58, 2110 次点击
操作环境:vfp6.0 excel2007
有多个excel表,表名按“部门+考勤表+年月”格式命名,每个表中有三个sheet1(考勤表)、sheet2(考勤汇总表)、sheet3(调休汇总表),表头及列数均固定,现求:
1、将所有表中的考勤表(sheet1)黄颜色部分数据分别导入考勤表.dbf中
2、将所有表中的考勤汇总表(sheet2)黄颜色部分数据分别导入考勤汇总表.dbf中
3、将所有表中的调休汇总表(sheet3)黄颜色部分数据分别导入调休表.dbf中
注:每个excel中sheet1和sheet3人数多少不一,有增减,人数不确定(sheet2与sheet2行数是一致的)
只有本站会员才能查看附件,请 登录

谢谢大佬帮助!
12 回复
#2
杂七杂八2022-06-29 19:21
有多个excel表,表名按“部门+考勤表+年月”格式命名:有二十几个这样的表格
#3
zhken2022-06-29 22:53
法一:如果用历遍文件逐表导入,需要比较多的时间进行调试,要耗费一定的精力。
法二:楼主利用部门来区分,将相同部门的数据 粘到同一张表上,全部简化为三个表,再导入到自由表中
建议部门繁多用自由表来管理将 那么查找更新管理报表将省时省力更省心。这是VFP的强项
#4
杂七杂八2022-06-30 05:20
回复 3楼 zhken
你好,谢谢!
我是先在EXCEL中拼好,然后再另存为DBF文件,一直是这样弄的。
在拼的过程中要粘贴出错的,想有没有直接转的,假若不能的话先将每一个表格转为三个dbf,然后再来合并也可以。
谢谢!
#5
schtg2022-06-30 06:34
回复 楼主 杂七杂八
建议采用3楼的第一种方法,20几张表,不会用太长时间的哈。
#6
a575985872022-06-30 09:09
抛砖引玉:
思路一、 既然表头和列都是固定的 ,看你黄色的数据都是除去表头之外的 数据  这样按你的思路 完全可以用vfp控制xls 将数据直接导入数据库中  (dbf) 其实 只需要导入 一个表数据即可 就是考勤表 ,而考勤汇总表和休假总表看似都是可以从考勤表中得出的  所以 另外两个表看似没必要进行导出操作
思路二、既然你想用vfp对xls进程操作,看你的流程需要每个月都要汇总的,为什么不从根本上解决问题呢?就是从开始就抛开xls文件统计,直接用vfp制作一个考勤软件  各个考勤点使用分支的客户端,你那里直接根据需要显示明细和汇总的数据,不是更高效么?
我认为用vfp完全可是实现上面两个思路的。只是需要费些时间写代码而已。

一管之见。
#7
厨师王德榜2022-06-30 16:38
给你做了一个简单的示范,只读取了第一个表,其它的,你可以仿照着写.
只有本站会员才能查看附件,请 登录
#8
杂七杂八2022-06-30 19:48
回复 7楼 厨师王德榜
只有本站会员才能查看附件,请 登录
#9
杂七杂八2022-06-30 20:30
cDefPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefPath)
CREATE CURSOR tt (编号 c(10),姓名 c(10),出生年月 c(10),语文 I, 数学 I,英语 I)
oExcel = CREATEOBJECT('Excel.Application')
oExcel.DisplayAlerts = 0
FOR i=1 TO ADIR(aXLS,"*.xls")
    sh = oExcel.WorkBooks.Open(cDefPath + aXLS[i,1]).ActiveSheet
    sh.Rows("1:2").Delete
    row1 = oExcel.CountA(sh.Columns(1))
    row2 = oExcel.CountA(sh.Columns(7))
    arr1 = sh.Cells(1,1).Resize(row1,6).Value  
    arr2 = sh.Cells(1,7).Resize(row2,6).Value  
    INSERT INTO tt FROM ARRAY arr1
    INSERT INTO tt FROM ARRAY arr2
    oExcel.WorkBooks.Close
ENDFOR
oExcel.Quit
SELECT * FROM tt
这是吹版的代码(多个excel合并到dbf的帖子中看见的)我想对原表excel不作变动,怎样改能为我所用,求救
#10
talkrobin2022-06-30 22:41
厉害,又学习了点知识.
#11
hu9jj2022-07-01 08:27
建议通过文件列表的方式,由程序控制逐个文件导入处理,而不是事先手工处理再导入。使用VFP处理的目的就是提高工作效率,减少数据人工处理时容易出现的差错。对于此类有规律的数据,最适合利用VFP来加工处理了。
#12
厨师王德榜2022-07-01 12:03
回复 8楼 杂七杂八
我这里只有 VFP9.0的环境,估计是你电脑上没有9.0导致的.
#13
sostemp2022-07-07 15:34
厉害,又学习了点知识.
1