| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1738 人关注过本帖, 1 人收藏
标题:EXCEL2007转换DBF
只看楼主 加入收藏
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
结帖率:90.14%
收藏(1)
已结贴  问题点数:20 回复次数:8 
EXCEL2007转换DBF
有一个EXCEL2003转换成DBF文件的小程序,现在想修改一下程序用来转换EXCLE2007以上版本为DBF(很想用EXCEL2007以上版本),不知行不行,求助高手解答如何修改.谢谢.
程序代码:
*以下代码把.xls电子表文件另存为数据库dbf表
cFileName=GETFILE('xls')     &&打开文件选择对话框
IF !EMPTY(cFileName)
    JUSTSTEM(cFileName)

 eole=CREATEOBJECT("Excel.application")&&创建EXCEL对象 
wjnames=JUSTSTEM(cFileName) &&取得文件名
eole.Workbooks.Open(SYS(5)+curdir()+wjnames)
eole.ActiveWorkBook.Saved = .t.
eole.displayalerts=.f.
eole.ActiveWorkbook.SaveAs(SYS(5)+curdir()+lower(wjnames),8) &&DBASE3格式
eole.quit
MESSAGEBOX("已转换成DBF数据库表"+chr(13)+SYS(5)+curdir()+lower(wjnames),64,"提示")
ENDIF                      
搜索更多相关主题的帖子: 如何 电子表 数据库 对话框 
2013-08-11 08:26
whinda
Rank: 6Rank: 6
等 级:贵宾
威 望:13
帖 子:253
专家分:418
注 册:2012-2-4
收藏
得分:10 
对于.xlsx格式,先调用execel.application.sheet另存为2000-2003格式(.xls),再用inport from datafile dbffile type "XLS"转换为.dbf,只是思路。自己实践。
2013-08-11 08:32
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
楼主测试过没有?

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-08-11 20:34
tjdeming
Rank: 2
等 级:论坛游民
帖 子:429
专家分:54
注 册:2013-3-4
收藏
得分:0 
没有,看来没有答案.

[ 本帖最后由 tjdeming 于 2013-8-11 20:39 编辑 ]
2013-08-11 20:37
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用tjdeming在2013-8-11 20:37:58的发言:

没有,看来没有答案.
建议先测试一下,也许能成功呢。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-08-12 06:10
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2233
专家分:3913
注 册:2007-4-27
收藏
得分:10 
以下是引用tjdeming在2013-8-11 08:26:36的发言:

有一个EXCEL2003转换成DBF文件的小程序,现在想修改一下程序用来转换EXCLE2007以上版本为DBF(很想用EXCEL2007以上版本),不知行不行,求助高手解答如何修改.谢谢.*以下代码把.xls电子表文件另存为数据库dbf表
cFileName=GETFILE('xls')     &&打开文件选择对话框
IF !EMPTY(cFileName)
    JUSTSTEM(cFileName)
 eole=CREATEOBJECT("Excel.application")&&创建EXCEL对象  
wjnames=JUSTSTEM(cFileName) &&取得文件名
eole.Workbooks.Open(SYS(5)+curdir()+wjnames)
eole.ActiveWorkBook.Saved = .t.
eole.displayalerts=.f.
eole.ActiveWorkbook.SaveAs(SYS(5)+curdir()+lower(wjnames),8) &&DBASE3格式
eole.quit
MESSAGEBOX("已转换成DBF数据库表"+chr(13)+SYS(5)+curdir()+lower(wjnames),64,"提示")
ENDIF                       
把cFileName=GETFILE('xls') 换成cFileName=GETFILE('xlsX') 在装有EXCEL2007的电脑上是可行的。我试过的——是一个单元格一个单元格读取的

只求每天有一丁点儿的进步就可以了
2013-08-12 12:03
zhaoai6520
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-12-22
收藏
得分:0 
试试我做的工具。https://down.bccn.net/6287.html

[ 本帖最后由 zhaoai6520 于 2013-12-22 10:59 编辑 ]
2013-12-22 10:39
zhaoai6520
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-12-22
收藏
得分:0 
LCFILENAME=GETFILE("XLS,XLSX","文件名","确定",0,"请选择EXCEL文件")
IF EMPTY(LCFILENAME)
    MESSAGEBOX("未选择(未找到需要的) EXCEL 文件",64,"系统信息")
    QUIT
ENDIF
DBFNAME = PUTFILE("保存为(&N):",JUSTSTEM(LCFILENAME)+".DBF","DBF")
IF EMPTY(DBFNAME)
    MESSAGEBOX("DBF文件名不能为空",64,"系统信息")
    QUIT
ENDIF
OEXCEL=CREATEOBJECT('Excel.application')
OEXCEL.WORKBOOKS.OPEN('&lcFileName') &&打开文件
I=1
***************获得表的可用SHEET*************************************
FOR EACH OMYVAR IN OEXCEL.SHEETS
    DIMENSION A(I)
    A(I)=OMYVAR.NAME
    I=I+1
NEXT OMYVAR
*********检查D:\ZHAOAI.XLS是否存在,若存在,删除***********
IF FILE('D:\ZHAOAI.xls')
    DELETE FILE D:\ZHAOAI.XLS
ENDIF
R=OEXCEL.SHEETS(A(1)).USEDRANGE.ROWS.COUNT &&有数据的总行数
C=OEXCEL.SHEETS(A(1)).USEDRANGE.COLUMNS.COUNT &&有数据的总列数
OEXCEL.CELLS(R,C).SELECT &&选中数据
OEXCEL.SELECTION.NUMBERFORMATLOCAL = "@" &&把被选定的单元格设为文本格式
OEXCEL.COLUMNS.AUTOFIT &&让所有的列宽都自动调整
OEXCEL.DISPLAYALERTS=.F.
OEXCEL.ACTIVEWORKBOOK.SAVEAS('D:\ZHAOAI',39) &&另存为5.0的Excel
OEXCEL.ACTIVEWORKBOOK.SAVED=.T. &&不保存当前EXCEL表
OEXCEL.WORKBOOKS.CLOSE &&关闭表
OEXCEL.QUIT &&退出EXCEL
RELEASE OEXCEL &&释放变量
*********************************************************
IMPORT FROM D:\ZHAOAI.XLS TYPE XL5 &&导入到默认目录下的ZHAOAI.DBF表中
DELETE FILE D:\ZHAOAI.XLS&&删除表
*********************************************************
USE ZHAOAI
MA=FCOUNT()
DIMENSION B(MA),D(MA),E(MA),F(MA),C(MA)
BADCHARS = '/,-=:;!@#$%&*.?<>()[]\'+'+'+CHR(34)+CHR(39)+" "
FOR LA=1 TO MA
    B(LA)=FIELD(LA)
    SCATTER TO D(LA)
    D(LA)=CHRTRANC(SUBSTR(ALLTRIM(D(LA)),1,10),BADCHARS,REPLICATE("_",LEN(BADCHARS)-1))
    IF LEN(RIGHTC(D(LA),1)) = 1 AND ISLEADBYTE(RIGHTC(D(LA),1))    && last byte is Double byte
        D(LA) = SUBSTR(D(LA),1,9)
    ENDIF
    IF !ISALPHA(LEFT(D(LA),1))
        D(LA) = 'C_'+D(LA)
        C(LA)=D(LA)
        ALTER TABLE ZHAOAI RENAME &B(LA) TO &C(LA)
    ELSE
        FOR LB=1 TO LA-1
            IF C(LB)==D(LA)
                IF LEN(D(LA))<7
                    D(LA)=ALLTRIM(D(LA)) +"_"+ALLTRIM(STR(LA))
                ELSE
                    D(LA)="C_"+ALLTRIM(STR(LA))
                ENDIF
            ENDIF
        NEXT
        C(LA)=D(LA)
        ALTER TABLE ZHAOAI RENAME &B(LA) TO &C(LA)
    ENDIF
NEXT
GOTO RECNO(1)
DELETE
PACK
MESSAGEBOX('已成功转换'+(LCFILENAME)+'表','提示')
CLOSE ALL
IF FILE(DBFNAME)
    DROP TABLE (DBFNAME)
ENDIF
RENAME ZHAOAI.DBF TO (DBFNAME)
QUIT
2013-12-25 08:38
lyquestc
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2018-3-10
收藏
得分:0 
回复 7楼 zhaoai6520
解压后ZA_EXCELTODBF.app 怎么运行啊?
2018-05-03 21:36
快速回复:EXCEL2007转换DBF
数据加载中...
 
   



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

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