复制下面的代码,粘贴到记事本里,另存为f_pbtoexcel.srf
打开你的程序,展开System tree,在library图标上右击,点击import。将刚才的f_pbtoexcel.srf导进来。
用法:双击按钮,然后在按钮的click事件里输入 f_pbtoexcel(dw_1) 即可,其中dw_1是数据窗口的名称。
global type f_pbtoexcel from function_object
end type
forward prototypes
global function integer f_pbtoexcel (datawindow adw)
end prototypes
global function integer f_pbtoexcel (datawindow adw);
integer li_rtn,ii,li_asc
string ls_name,ls_pathname
boolean lb_exist
if adw.RowCount()<1 then
MessageBox("提示信息","请先检索数据再导出至Excel!")
return -1//error
end if
ls_pathname='导出文件'
li_rtn=GetFileSaveName("保存文件",ls_pathname,ls_name,"xls","Excel文件(*.xls),*.xls","C:\My Documents")
if li_rtn=1 then
lb_exist = FileExists(ls_pathname)
IF lb_exist THEN
li_rtn = MessageBox("保存", ls_pathname+"已经存在,是否覆盖?",Exclamation!, YesNo!)
end if
if li_rtn=1 then
//当文件存在用户选择覆盖,或是文件本就不存在时。注意变量li_rtn
li_rtn=adw.SaveAsAscii(ls_pathname)
if li_rtn=1 then
int ret
OLEObject xlapp
xlApp = Create OLEObject
// Connect to Excel and check the return code
ret = xlApp.ConnectToNewObject( "Excel.Sheet" )
if ret < 0 then
MessageBox("Connect to Excel Failed !",string(ret))
end if
xlApp.Application.Workbooks.Open(ls_pathname)
xlApp.Application.Visible = true
xlapp.application.WindowState=-4137
xlapp.application.activewindow.WindowState=-4137
//MessageBox("提示信息","导出数据成功!")
else
MessageBox("错误信息","导出数据失败!")
return -1//error
end if
else
return -1//error
end if
else
return -1
end if
return 1
end function
如果代码是你在写的话很简单,数据窗口直接可以存成xls,txt,xml等多种形式的,你在pb帮助里搜dw_1.saveas('','',')这个就可以看到例子,常用的函数,比较少有用到.saveascii的
你的数据是否是在数据窗口中的?如果是数据窗口中,使用PB自带的SAVEAS功能非常快的。
举个小列子,比如有个按钮叫导出,导出窗口中dw_1数据窗口的数据
string ls_path, ls_file
integer li_rc, li_ret
li_rc = getfilesavename("选择文件",ls_path,ls_file,"XLS","Excel Files (*.xls),*.xls, *.*")
if li_rc <> 1 then return
dw_1.SaveAs(ls_path,Excel!,TRUE)
用PB数据自带的函数saveas,速度很快
一次肯定导不出来,只能分几个表存储