注册 登录
编程论坛 VFP论坛

有没有办法用VFP转换EXCEL表格?

smart921 发布于 2020-10-22 20:01, 2074 次点击
如何将下列表格
A公司                                       
    1车间              
        班组A   
            刘**
            李**
        班组B   
            殷**
            杨**
    2车间        
        班组A   
            朱**
            张**
        班组B   
            曹**
            占**
B公司            
    1车间        
        班组A   
            刘**
            吕**
        班组B   
            叶**
            杨**
    2车间        
        班组A   
            朱**
            鹏**
        班组B   
            曹**
            林**
转换为下列格式

单位    车间    班组    姓名
A公司    1车间    班组A    刘**
A公司    1车间    班组A    李**
A公司    1车间    班组B    殷**
A公司    1车间    班组B    杨**
A公司    2车间    班组A    朱**
A公司    2车间    班组A    张**
A公司    2车间    班组B    曹**
A公司    2车间    班组B    占**
B公司    1车间    班组A    刘**
B公司    1车间    班组A    吕**
B公司    1车间    班组B    叶**
B公司    1车间    班组B    杨**
B公司    2车间    班组A    朱**
B公司    2车间    班组A    鹏**
B公司    2车间    班组B    曹**
B公司    2车间    班组B    林**
只有本站会员才能查看附件,请 登录
6 回复
#2
sdta2020-10-22 20:47
上传相关DBF表
#3
吹水佬2020-10-22 21:52
只有本站会员才能查看附件,请 登录

程序代码:
cDefaultPath = ADDBS(JUSTPATH(SYS(16)))
SET DEFAULT TO (cDefaultPath)

oExcel = CREATEOBJECT("Excel.Application")
oExcel.DisplayAlerts = 0
oExcel.WorkBooks.Open(cDefaultPath+"测试.xls")
oExcel.ActiveWorkBook.SaveAs(cDefaultPath+"tmp.txt", -4158)
oExcel.Quit

CREATE CURSOR tt (f1 C(10),f2 C(10),f3 C(10),f4 C(10))
CREATE CURSOR tmp (f1 C(10),f2 C(10),f3 C(10),f4 C(10))
APPEND FROM tmp.txt DELIMITED WITH TAB
STORE "" TO m1,m2,m3
SCAN
    IF !EMPTY(f1) AND m1!=f1
        m1 = f1
    ENDIF
    IF !EMPTY(f2) AND m2!=f2
        m2 = f2
    ENDIF
    IF !EMPTY(f3) AND m3!=f3
        m3 = f3
    ENDIF
    IF !EMPTY(f4)
        INSERT INTO tt VALUES (m1,m2,m3,tmp.f4)
    ENDIF
ENDSCAN

SELECT * FROM tt
#4
smart9212020-10-22 21:53
回复 2楼 sdta
我的意思是能不能通过VFP将shhet1表转换为sheet3。
#5
sdta2020-10-22 23:25
oExcel = CREATEOBJECT("Excel.Application")
oExcel.WorkBooks.Open(SYS(5)+SYS(2003)+"\测试.xls")
oExcel.DisplayAlerts = .F.
oExcel.ActiveWorkbook.Saveas(SYS(5)+SYS(2003)+"\cs.txt", -4158)
oExcel.Quit
RELEASE oExcel
CREATE CURSOR cs (f1 C(10),f2 C(10),f3 C(10),f4 C(10))
APPEND FROM cs.txt DELIMITED WITH TAB
GO top
m1 = f1
m2 = f2
m3 = f3
SCAN
    IF EMPTY(f1)
        REPLACE f1 WITH m1
    ENDIF
    IF EMPTY(f2)
        REPLACE f2 WITH m2
    ENDIF
    IF EMPTY(f3)
        REPLACE f3 WITH m3
    ENDIF
    m1 = f1
    m2 = f2
    m3 = f3
ENDSCAN
SELECT * FROM cs WHERE !EMPTY(f4)
#6
schtg2020-10-23 05:26
两位版主,学习啦,谢谢!
只有本站会员才能查看附件,请 登录
#7
smart9212020-10-23 06:21
感谢二位版主!
1