经常有人需要把DBF文件转换为XLS文件,但是现在好多都是单个转换的,没有批量转换的。因此针对这个问题,做了一个批量DBF转换为XLS。其实是老婆要用这个功能o(∩_∩)o...。她计算机没装.net,因此只好用VB编了。没什么难度,比较适合有同样需要的人使用,附上完全代码,供初学者学习。自己感觉对问题分析的还比较到位。
源码已经上传至:http://download.csdn.net/user/binsweet/
其中涉及到的重点问题:
1、DBF转换核心思路
一般情况下,都是把DBF当作数据库处理,用ado读出数据后,连接Excel,然后再写进去就可以了。我感觉比较麻烦,就偷了个懒,先DBF文件以二进制形式读进剪贴板,然后打开Excel,然后粘贴就可以了。但是我估计如果DBF文件过大,超过剪贴板的大小,就会失败的。好在老婆用到的DBF文件都是几百K以内。先就这样吧。
//读写二进制文件,存入剪贴板
Open txtFilePath.Text For Binary As #Handle
FileString = Space(FileLen(txtFilePath.Text))
Get #Handle, , FileString
Close #Handle
Clipboard.Clear
Clipboard.SetText FileString
//粘贴进Excel
Set xlsheet = xlBook.Worksheets(1) '设置活动工作表
xlsheet.Paste
2、操作Excel
这个不难
一般流程
//定义对象
Dim xlApp As Excel.Application '定义EXCEL类
Dim xlBook As Excel.Workbook '定义工件簿类
Dim xlsheet As Excel.Worksheet '定义工作表类
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Add
xlApp.Visible = False '设置EXCEL对象可见(或不可见)
//使用对象
...........
//使用完后,关闭对象释放内存
xlBook.Close (True) '关闭工作簿
xlApp.Quit '结束EXCEL对象
Set xlsheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing '释放xlApp对象
3、文件遍历
这个也比较简单。我只实现了单个目录下文件的遍历,不含字文件夹。有兴趣的可以递归一下实现。
//循环遍历
sFile = Dir(mPath + "*.dbf", vbNormal + vbArchive + vbHidden)
Do While Len(sFile) > 0
sFile = UCase(Trim(sFile))
//使用sFile
...........
//继续遍历
sFile = Dir
Loop