欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么将dbf文件数据导出到excel的指定工作表中

更新时间: 2014-01-05 02:26:49 责任编辑: Author_N1

 

求助:如何将DBF文件数据导出到EXCEL的指定工作表中?
兄弟是新新手,工作需要,学习VFP。
VFP中已经建好四张DBF表,A01,A02,A03,A04。
需要将A01、A02、A03、A04四张表的数据,分别导出到EXCEL表格AA的工作表sheet1、sheet2、sheet3、sheet4中。

学了一天,看VFP控制EXCEL,还是没有解决。
请各位帮忙
万分感谢! 如果不需要精确控制每个单元格格式的话,逐个填写单元格不是个好办法。当表字段和记录数很大时,这种方法需要消耗的时间是无法忍受的。
vfp 提供了 DataToClip 方法,可以快速将数据复制到系统剪贴板,下面是使用示例:
Set Talk Off
* -- 创建 4 个测试用临时表
Create Cursor A01 (f1 C(20))
Create Cursor A02 (f1 C(20))
Create Cursor A03 (f1 C(20))
Create Cursor A04 (f1 C(20))
For ii = 0 To 3
    cAlias = Textmerge('A0<<ii+1>>')
    For jj = 1 To 10000      && 每个测试表插入 1w 条测试用记录
        Insert Into (cAlias) (f1) Values (cAlias + Sys(2015))
    Endfor
    Goto Top In (cAlias)
Endfor
* -- End of 创建测试用表

* 开始将记录导入到 Excel 中
Local oo As Excel.Application

oo = Newobject('Excel.Application')
Do While oo.Workbooks.Count < 1     && 确保至少有 1 个工作簿
    oo.Workbooks.Add()
Enddo
Do While oo.Workbooks(1).Sheets.Count < 4        && 确保有 4 个工作表
    oo.Sheets.Add(Null, oo.Workbooks(1).Sheets(oo.Sheets.Count))
Enddo

_使用复制粘贴法 = .T.
s1 = Seconds()
For ii = 1 To 4     && 循环将 4 个表的数据复制,粘贴到 4 个工作表
    cAlias = 'A' + Padl(ii, 2, '0')
    s0 = Seconds()
    If _使用复制粘贴法
        _vfp.DataToClip(cAlias, 0xffff, 3)       && 将 A0? 表的记录复制到剪贴板
        oo.Workbooks(1).Sheets(ii).Paste         && 再从剪贴板粘贴到工作表
        _cliptext = ''
    Else
        oo.Workbooks(1).Sheets(ii).Select
        Select (cAlias)
        Scan
            oo.cells[recno(),1].value = f1
        EndScan
    EndIf
    ? '填充 Sheet' +Padl(ii,1) + ' 耗时:' + Ltrim(Str(Seconds()-s0,10,4))
Endfor
? '*** 填充 40000 行数据共耗时:' + Transform(Seconds()-s1)

oo.Visible = .T.    && 看看结果
* ...
* 保存并退出(参见你5楼后面的代码)


改变 _使用复制粘贴法 变量为 .F.,你可以看到速度上的差别
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:26:49
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9873/
本文WWW.DOC100.NET DOC100.NET版权所有。