⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 将vfp数据转给excel.txt

📁 Vfp 文档 一些经典编程文章 可供初学者学习编程时使用
💻 TXT
字号:



将Visual FoxPro的数据转给Excel 
中国科学院广州能源研究所 
张伟铭 
---- 用Visual FoxPro编程,很多时候需要将用户需要的数据有条件地转出给其他软件处理。Excel是大家熟悉的软件,这里,本人总结了一种转换方法,供大家参考。 

---- 1、 转化的基本条件 

---- 对需要转出数据的主数据表,需要提供另外一个辅助表,此表需要与主表同时打开,表的结构如下:(在此命名为d_gwt.dbf) 

字段名	类型	宽度	备注
E_NAME	字符型	20	记录主表的字段名
D_FORT	逻辑型	1	备份选择项目(可以不要)
S_FORT	逻辑型	1	选择项目
---- 2、 建立一个如下表单以供主表单调用,以便选择输出不同的字段的内容: 

 表单的Init event:
	replace all d_gwt.d_fort with d_gwt.s_fort
	goto top
	Grid1的Init event:
	this.column2.check1.caption=""
    &&取消选择符号后面的文字
	"取消”的click event:
	release  thisform
	"全部不选”的click event:
	nrecno=recno()
	replace all d_fort with .F.
	goto nrecno
	thisform.refresh
	"全部选中”的click event:
	nrecno=recno()
	replace all d_fort with .T.
	goto nrecno
	thisform.refresh
	"确认”的click event:
	replace all s_fort with d_fort
	release thisform
---- 3、 记录的筛选: 

---- 请使用Visual FoxPro自带的过滤器选择记录,当然也可以自己另外设计程序对主数据表进行筛选,这里只是使用filter()的返回值。 

---- 4、 转化数据给Excel: 

---- 打开建立一个命令控件,使其click event如下: 

	LOCAL  i, j, xlsheet, XLApp, tmpsheet,
    nrecno,gwtfilter, ntorf
	SELE gwt    &&在此使用gwt.dbf为主数据表
	gwtfilter=filter()
	count to nrecno
	SELE D_GWT
	COUNT TO NTORF FOR S_fort
	IF NTORF=0
	  WAIT "没有选择任何项目的数据
      给Excel处理..." windows 
	   Sele gwt
	   Return
	ENDIF
	SELECT e_name from alias() where
    s_fort INTO ARRAY arrTestData1
	    SET FILTER TO s_fort=.T.
	    selectfield=""
	    GOTO TOP
	    DO WHILE .NOT. EOF()
        selectfield=selectfield+E_NAME+','
      SKIP
    ENDDO
    selectfield=SUBSTR(selectfield,1,len(selectfield)-1)
    SET FILTER TO

	SELE GWT
	DIMENSION arrtestdata(ntorf,nrecno)
	IF Empty(GWTFILTER)
	     SELECT &selectfield from alias()
         INTO ARRAY arrTestData
	  ELSE
	     SELECT &selectfield from alias()
         WHERE &gwtfilter INTO ARRAY arrTestData
	ENDIF  
	WAIT WINDOW "Starting Excel..." NOWAIT 
	tmpsheet = GetObject('','excel.sheet')
	XLApp = tmpsheet.application
	XLApp.Visible = .t.
	XLApp.WorkBooks.Add()
	XLSheet = XLApp.ActiveSheet
**转换第一行的数据,也即是数据表的字段

	FOR I=1 TO NTORF
     XLSheet.Cells(1,I).Value = arrTestdata1(1,I)
	ENDFOR
**转换数据内容
	FOR i = 1 to nrecno
     FOR j = 1 to ntorf
     XLSheet.Cells(i+1,j).Value = arrTestData(i,j)
     ENDFOR
     ?? chr(7)
 ENDFOR
WAIT WINDOW "数据转化成功..." TIMEOUT 2
 --------------------------------------------------------------------------------
中国计算机世界出版服务公司版权所有 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -