admin 管理员组文章数量: 1087139
2024年3月6日发(作者:redis持久化用的什么)
PB数据窗口导出excel,修改第一行英文标题为中文标题,计算合计值
分类: PB 2013-11-05 13:01 712人阅读 评论(0) 收藏 举报
pb数据窗口导出excel中文标题计算合计值
数据窗口导出excel
利用(filename,Excel5!,true)方法先导出带英文标题的excel。
int li_ret
string ls_filename,ls_pathname
boolean lb_exist
if nt()=0 then
messagebox("提示","无可保存的数据!")
return;
end if
li_ret = GetFileSaveName("保存文件",ls_pathname,ls_filename,"xls","Excel文件(*.xls),*.xls")
if li_ret=1 then
lb_exist = FileExists(ls_pathname)
IF lb_exist THEN
li_ret = MessageBox("保存", ls_pathname+"已经存在,是否覆盖?",Exclamation!, YesNo!)
end if
if li_ret=1 then
li_ret = (ls_pathname,EXCEL5!, true)//此处必须为true,后面要修改第一行。
if li_ret=1 then
//修改标题头,计算合计
gf_set_title_sum(dw,ls_pathname)
messagebox('提示','保存成功!')
end if
end if
end if
2.修改第一行英文标题为中文标题,计算合计值
gf_set_title_sum(datawindow dw,string vs_filename)函数如下:
int li_ret
long ll_column,ll_num,ll_dwrowcount
long ll_xlsrowcount//excel的行数
string ls_objtag[]//标题
string ls_width[]//每列宽度
string ls_obj,ls_value
string ls_objs[]
int i,j
String ls_english = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
string ls_colname
//操作excel
Pointer oldpointer
OLEObject ole_object
ole_object = CREATE OLEObject
//修改标题头,计算合计
li_ret = ole_tToNewObject("ation")
IF li_ret <> 0 THEN
MessageBox('打开错误','无法连接EXCEL!是否已经安装了EXCEL?错误号:' +
String(li_ret))
RETURN
END IF
ole_e = false //ole应用服务是否显示
oldpointer = SetPointer(HourGlass!)
ole_(vs_filename)//打开文件
//获取标题
ll_column = Long() //取得字段总数
i = 0
FOR ll_num = 1 TO ll_column
IF BE("#"+String(ll_num)+".Visible") = "1" THEN //列标志为nun_Visible的不显示
i = i+1
ls_obj = BE("#"+String(ll_num)+".name") //字段名称的实际存储值
ls_objs[i] = ls_obj
ls_objtag[i] = BE(ls_obj + "_") //字段名称的显示值
ls_width[i] = BE(ls_obj + '.width') //每列的宽度
END IF
NEXT
//开始修改标题头
for j=1 to upperbound(ls_objtag)
ole_(1,j).value=ls_objtag[j]
next
//标题一行居中
ole_(1).HorizontalAlignment = 3//居中
//计算合计值
ll_dwrowcount=nt()//行数
ll_xlsrowcount=ll_dwrowcount+1//除了合计之外的行数
ole_(ll_xlsrowcount+1,1).value='合计'
for j=2 to ll_column
ls_colname=Mid(ls_english,j,1)//获取列名B
ole_(ls_colname+'2:'+ls_colname+string(ll_xlsrowcount)).Select//选中B2:B4
ole_(ls_colname+string(ll_xlsrowcount+1)).Activate//将B5设为活动单元格
ole_aR1C1 =
"=SUM(R[-"+string((ll_xlsrowcount+1)-2)+"]C:R[-1]C)"//计算从第二行到倒数第二行的和值
next
ole_oks(1).worksheets(1).t //自适应列宽,行的话换EntireRow
ole_oks(1).save()//保存
ole_()//退出
ole_nectobject()//断开连接
destroy ole_object//销毁连接
3.总结:
其中关于excel操作的部分代码,可以使用excel里面的宏录制功能,查看对应操作的代码。
Excel中Sum(R[-1]C:R[1]C[9])的意思:
sum是求和函数,R 表示 行;C 表示列。(当设置为R1C1引用时)
R[-1] 表示 当前行的上一行;
C 表示 当前列;
R[1] 表示 当前行的下一行;
C[9] 表示 当前列的后9列。
版权声明:本文标题:PB数据窗口导出excel 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1709722339a544206.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论