PB中导出EXCEL请教!

目前用PB做了一个小系统,字段大概有170多个,需要导出为EXCEL(目前表大概有7000多列,以后会更多),但用OLE导出时,就是一行一行往EXCEL里写很慢,请问有什... 目前用PB做了一个小系统,字段大概有170多个,需要导出为EXCEL(目前表大概有7000多列,以后会更多),但用OLE导出时,就是一行一行往EXCEL里写很慢,请问有什么方式(就想用WEB下载一样)能一次导出来另存为就OK了,或其他快速的方法?谢谢! 展开
 我来答
同意所有条款
2011-07-20 · TA获得超过3293个赞
知道小有建树答主
回答量:1147
采纳率:100%
帮助的人:448万
展开全部
复制下面的代码,粘贴到记事本里,另存为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
庄妍洛宏毅
2019-03-10 · TA获得超过3850个赞
知道大有可为答主
回答量:3214
采纳率:33%
帮助的人:196万
展开全部
如果代码是你在写的话很简单,数据窗口直接可以存成xls,txt,xml等多种形式的,你在pb帮助里搜dw_1.saveas('','',')这个就可以看到例子,常用的函数,比较少有用到.saveascii的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hit_lubin
推荐于2017-11-24 · TA获得超过7889个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:1994万
展开全部
你的数据是否是在数据窗口中的?如果是数据窗口中,使用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)
追问
多谢几位!确实很快,但是为什么标头不出来?只是内容?如何让标头也出来啊?
追答
saveas是可以导出表头的,但是是以英文字段的名字导出。
你可以使用打开EXCEL然后修改EXCEL第一行内容的方式来修改表头的名字。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
景龙池勤快的米花
2011-07-19 · 超过18用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:50.7万
展开全部
用PB数据自带的函数saveas,速度很快
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HDwanghuan
2011-07-18 · TA获得超过518个赞
知道答主
回答量:308
采纳率:0%
帮助的人:146万
展开全部
一次肯定导不出来,只能分几个表存储
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式