注册 登录
编程论坛 VB6论坛

突破Excel版本限制写入dbf数据库

foreach 发布于 2021-12-23 10:48, 2205 次点击

如想将Excel内容写入空白的dbf数据库文件中对应列,不限于excel版本
如何通过VB实现?

只有本站会员才能查看附件,请 登录
4 回复
#2
吹水佬2021-12-23 11:30
1、在装有VFP的机上可用引用VFP对象操作DBF
2、没有装VFP的机上只可按DBF格式从底层直接读写DBF文件
#3
foreach2021-12-24 08:26
回复 2楼 吹水佬
可以提供代码吗?
实在不知道怎么写入,谢谢
#4
风吹过b2021-12-25 16:57
xls 文件,可以使用 ADO 数据库引擎当数据库打开。
xlsx 文件,ADO不知道能不能支持。它本身是一个ZIP压缩包,里面有一个 xml 文件,里面定义了每个单元格的数据。

DBF ,可以使用ADO打开,使用数据库操作命令去操作。

----------------------------
需要手动操作DBF 的话,那就自己 解析 DBF 吧
DBF 文件好像是分三段结构,文件头+字段定义表+数据,具体百度下吧,都忘光了。
其中字段定义表定义了有多少个字段,每个字段名 及 字段占用字节数,汉字算2个字符
数据是每行数据+1个标志位构成。自己 按字段字义,拼接成BYTE数组 ,一次性写入,读取是也指定位置读指定多少字节到BYTE数组中,然后根据字段进行拆解,得到结果。
#5
吹水佬2021-12-26 16:42
以下是引用foreach在2021-12-24 08:26:19的发言:

可以提供代码吗?
实在不知道怎么写入,谢谢

直接在EXCEL测试(已安装VFP)
只有本站会员才能查看附件,请 登录

程序代码:
Private Sub CommandButton1_Click()
    Dim oFox As Object
    Set oFox = CreateObject("VisualFoxPro.Application")
    oFox.DoCmd "CREATE TABLE C:\temp\test.dbf (f1 I,f2 I,f3 I)"
    oFox.DoCmd "INSERT INTO test VALUES (11,12,13)"
    oFox.DoCmd "INSERT INTO test VALUES (21,22,23)"
    oFox.DoCmd "GO TOP IN 'test'"
    oFox.DataToClip "test", , 3
    Cells(1, 1).Select
    ActiveSheet.Paste
    oFox.DoCmd "INSERT INTO test VALUES (" & Cells(2, 1).Value & "," & Cells(2, 2).Value & "," & Cells(2, 3).Value & ")"
    oFox.DoCmd "INSERT INTO test VALUES (" & Cells(3, 1).Value & "," & Cells(3, 2).Value & "," & Cells(3, 3).Value & ")"
    oFox.DoCmd "GO TOP IN 'test'"
    oFox.DataToClip "test", , 3
    Cells(5, 1).Select
    ActiveSheet.Paste
    oFox.DoCmd "USE IN 'test'"
End Sub
1