| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
跟大牛学C++学算法数据结构
共有 556 人关注过本帖
标题:如何从Excel中建立DBF数据表
只看楼主 加入收藏
lianliming
Rank: 2
等 级:论坛游民
帖 子:28
专家分:18
注 册:2009-5-24
结帖率:100%
  已结贴   问题点数:20  回复次数:9   
如何从Excel中建立DBF数据表
Excel表格中第1行为建立Dbf的字段,从第2行开始为Dbf的记录,如何用编程形式将Excel表格转换为Dbf数据表,谢谢!
如表:
附件: 您没有浏览附件的权限,请 登录注册
2019-01-05 13:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:179
帖 子:7525
专家分:18117
注 册:2012-2-5
  得分:7 
运行环境:WINXP+EXCEL2003+VFP9 7.423
程序代码:
cFileName = SYS(5) + SYS(2003) + "\Excel导入Dbf测试数据.xls"
oExcel = CreateObject("Excel.Application")
WITH oExcel
    .WorkBooks.Open(cFileName)
    .ActiveSheet.UsedRange.Columns.AutoFit
    nCols = .ActiveSheet.UsedRange.Columns.Count
    cStru = ""
    FOR ii = 1 TO nCols
        nWidth = INT(.ActiveSheet.Columns(ii).ColumnWidth)
        cStru = cStru + IIF(EMPTY(cStru), "", ",") + .ActiveSheet.Cells(1, ii).Text + " C(" + TRANSFORM(nWidth) + ")"
    ENDFOR
    .DisplayAlerts = .F.
    .ActiveWorkbook.SaveAs(cFileName, 39)
    .DisplayAlerts = .T.
    .QUIT
    RELEASE oExcel
ENDWITH

CREATE CURSOR Cssj (&cStru)
APPEND FROM Excel导入Dbf测试数据 TYPE XL5
SELECT * FROM Cssj WHERE RECNO() > 1



[此贴子已经被作者于2019-1-5 14:32编辑过]

附件: 您没有浏览附件的权限,请 登录注册

坚守VFP最后的阵地
2019-01-05 14:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:179
帖 子:7525
专家分:18117
注 册:2012-2-5
  得分:0 
将EXCEL另存为:

然后再追加
附件: 您没有浏览附件的权限,请 登录注册

坚守VFP最后的阵地
2019-01-05 15:28
sostemp
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:20
注 册:2009-6-2
  得分:7 
cFileName = SYS(5) + SYS(2003) + "\Excel导入Dbf测试数据.xlsx"
cOutFileName = SYS(5) + SYS(2003) + "\Excel导入Dbf测试数据.xls"
oExcel = CreateObject("Excel.Application")
WITH oExcel
    .WorkBooks.Open(cFileName)
    .ActiveSheet.UsedRange.Columns.AutoFit
    nCols = .ActiveSheet.UsedRange.Columns.Count
    cStru = ""
    FOR ii = 1 TO nCols
        nWidth = INT(.ActiveSheet.Columns(ii).ColumnWidth)
        cStru = cStru + IIF(EMPTY(cStru), "", ",") + .ActiveSheet.Cells(1, ii).Text + " C(" + TRANSFORM(nWidth) + ")"
    ENDFOR
    .DisplayAlerts = .F.
    .ActiveWorkbook.SaveAs(cOutFileName, 39)
    .DisplayAlerts = .T.
    .QUIT
    RELEASE oExcel
ENDWITH

CREATE CURSOR Cssj (&cStru)
APPEND FROM Excel导入Dbf测试数据 TYPE XL5
SELECT * FROM Cssj WHERE RECNO() > 1

抖胆把版主的代码小小修改了一下,应该是可以运行了。

[此贴子已经被作者于2019-1-5 18:36编辑过]

2019-01-05 18:35
sostemp
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:20
注 册:2009-6-2
  得分:0 

附件: 您没有浏览附件的权限,请 登录注册
2019-01-05 18:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:179
帖 子:7525
专家分:18117
注 册:2012-2-5
  得分:0 
如果你电脑上安装有EXCEL2007,可以将扩展名改为.XLSX

坚守VFP最后的阵地
2019-01-05 18:52
lianliming
Rank: 2
等 级:论坛游民
帖 子:28
专家分:18
注 册:2009-5-24
  得分:0 
感谢2位老师!经测试,4楼程序在WIN10(64位专业版)+EXCEL2016+VFP9 7.423环境下可运行!!
再次感谢,谢谢!!!
2019-01-06 09:51
lianliming
Rank: 2
等 级:论坛游民
帖 子:28
专家分:18
注 册:2009-5-24
  得分:0 
有点高兴得太早,运行一次成功后,就.........
附件: 您没有浏览附件的权限,请 登录注册
2019-01-06 10:08
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:179
帖 子:7525
专家分:18117
注 册:2012-2-5
  得分:0 
路径问题

坚守VFP最后的阵地
2019-01-06 10:40
wengjl
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:67
帖 子:1532
专家分:2745
注 册:2007-4-27
  得分:7 

cFileName =GETFILE("xls")
 oExcel = CreateObject("Excel.Application")
 WITH oExcel
     .WorkBooks.Open(cFileName)
     .ActiveSheet.UsedRange.Columns.AutoFit
     .DisplayAlerts = .F.
     .ActiveSheet.cells(1,1).select
     dbfname=FORCEEXT(cFileName,"dbf")
     .ActiveWorkbook.SaveAs(dbfName,8)
     .Workbooks.close
     .QUIT
     RELEASE oExcel
 ENDWITH


利用VF直接另存为……

EXCEL字段名不可以超过5个汉字——因为另存为DBF是自由表。

[此贴子已经被作者于2019-1-7 12:42编辑过]


只求每天有一丁点儿的进步就可以了
2019-01-07 11:00







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

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