2023年11月29日发(作者:)PB调用EXCEL的操作不失为一种好的报表输出方式 收藏
对于较为中国化的报表,虽然后dw这个坚强后盾,但是也难不住繁复疲劳的应对。
不过我们可以知道,数据的输出,都是居于table的栏位或者计算字段。只是很多统计的模式和展现模式不同。
我在一年前作完一个系统,可是客户几乎隔三差五有新的东东要输出报表。终于我发现。让客户先在excel里弄好,然后再写程序来输出也是一个不错的方法。关键是,客户给的东西不必要再进自己的系统,所以数据不会发生什么问题。如果本身软件有任何问题,那能从excel里的写的结果很容易看得出来。虽然写excel表格要花很多时间,但是减少了输入导入和输出的一些麻烦。
转载excel操作大全:
powerbuilder操作excel命令大全(例子的有些地方不对!)
2006-12-04 16:43
1.创建Excel对象
eole=CREATEOBJECT(′ation′)
2.添加新工作簿
3.设置第3个工作表为激活工作表
eets(″sheet3″).Activate
4.打开指定工作簿
(″c:″)
5.显示Excel窗口
e=.t.
6.更改Excel标题栏
n=″VFP应用程序调用Microsoft Excel″
7.给单元格赋值
(1,4).value=XM(XM为数据库字段名)
8.设置指定列的宽度(单位:字符个数)
s(1).ColumnWidth=5
9.设置指定行的高度(单位:磅)
(1).RowHeight=1/0.035
(设定行高为1厘米,1磅=0.035厘米)
10.在第18行之前插入分页符
eets(″Sheet1″).Rows(18).PageBreak=1
11.在第4列之前删除分页符
s(4).PageBreak=0
12.指定边框线宽度(Borders参数如下)
(″b3:d3″).Borders(2).Weight=3
13.设置四个边框线条的类型
(″b3:d3″).Borders(2).LineStyle=1
(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)
14.设置页眉
Header=″报表1″
15.设置页脚
Footer=″第&P页″
16.设置页眉到顶端边距为2厘米
Margin=2/0.035
17.设置页脚到底边距为3厘米
Margin=3/0.035
18.设置顶边距为2厘米
gin=2/0.035
19.设置底边距为4厘米
Margin=4/0.035
20.设置左边距为2
厘米
rgin=2/0.035
21.设置右边距为2厘米
argin=2/0.035
22.设置页面水平居中
Horizontally=.t.
23.设置页面垂直居中
Vertically=.t.
24.设置页面纸张大小(1-窄行8 5 11 39-宽行14 11)
ize=1
25.打印单元格网线
ridlines=.t.
26.拷贝整个工作表
27.拷贝指定区域
(″A1:E2″).Copy
28.粘贴
eet(″Sheet2″).Range(″A1″).PasteSpecial
29.在第2行之前插入一行
(2).Insert
30.在第2列之前插入一列
s(2).Insert
31.设置字体
(2,1).=″黑体″
32.设置字体大小
(1,1).=25
33.设置字体为斜体
(1,1).=.t.
34.设置整列字体为粗体
s(1).=.t.
35.清除单元格公式
(1,4).ClearContents
36.打印预览工作表
review
37.打印输出工作表
ut
38.工作表另为
(″c:″)
39.放弃存盘
=.t.
40.关闭工作簿
41.退出Excel
42 合并
string worksheet,beginRowcol,EndRowCol
(worksheet).Range(BeginRowCol ":" EndRowCol).Select
(worksheet).Range(BeginRowCol ":" EndRowCol).Merge
43 sheet改名
(olename).select
(olename).name=newname
MyOLE=Create OLEObject
ConnectErr=tToNewObject ("ation")
e=false
//打开指定的XLS文件激活workbooks
(FilePath)
//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
yAlerts = False
if isnull(MyOLE) then return -1 ;
if ConnectErr <0 then
choose case ConnectErr
case -1
messagebox('错误提示messagebox("错误提示","服务器不能装载选择的文件")
case -9
messagebox("错误提示","其他错误")
end choose
return -1
end if
///////////////////////////////////////////////////////////////////////////////
oleobject xlApp //声明Excel应用程序对象
xlApp = Create OLEObject
OLEObject xlsub1,xlsub2,xlsub3,obook1,obook2,xlsub4,obook3
ret = tToNewObject( "" ) //打开自动化对象 应为 "ation"
if ret < 0 then
MessageBox("Connect to Excel Failed !",string(ret))
return
//操作第一个excel文件
string ls_file3="C:"
obook3=(ls_file3) //打开文件
xlsub4 = eets[1] //激活第一页
//对单元格赋值
[c,3].Value = string(mdecimal(r,'rs'))
[c,5].Value = string(mdecimal(r,'yp'))
[c,6] = string(mdecimal(r,'jc'))
[c,7] = string(mdecimal(r,'hy'))
[c,8] = string(mdecimal(r,'zl'))
//合并一个excel文件
string ls_ran
ls_ran = "B6:M"+string(ld_1+1)
obook1 = (ls_file2)
xlsub1 = eets[1]
(ls_ran).Copy() //把所选内容复制到内存中
e = false
xlsub2 = ()
= "分类汇总"
(ls_ran).PasteSpecial() //把上一个文件内容粘过来
//加入分类汇总
eets("分类汇总").Activate()
integer a[6]
a={8,9,10,11,12,13}
(ls_ran).Select()
al(3,-4157,a, True, False, True)
(1).Insert()
[1,1] = left(gs_shuqi,4)+"年"+right(gs_shuqi,2)+"月份"
[1,1].="宋体"
[1,1].=22
("A1:M1").Select()
()
ntalAlignment = 2
()
()
(is_docname)
()
()
()
nectObject()
//
public function boolean f_excel_hb (string filename_s, string filename_t, string sheetname_s, string sheetname_t);
//==========================================================
// 合并两个工作簿中的某个工作表
//==========================================================
// 作者:yyoinge 2011-10-12 18:00
//==========================================================
// 将工作簿filename_s中的工作表sheetname_s以新的
// 工作表名称sheetname_t,复制到工作簿filename_t的最后
//==========================================================
if not fileexists(filename_s) then
messagebox('d if
if not fileexists(filename_t) then
messagebox('作表前面
而上述函数复制工作表的方法为:
[cpp] view plaincopy
int li
setnull(li)
ole_object_oks(filename_s).Sheets(sheetname_s).copy(li, ole_object_oks(filename_t).Sheets(long(ole_object_oks(filename_t).))) //将源工作表复制到目标工作簿的最后1个工作表后面
这边需要对copy方法进行说明,在VBA中,工作表复制的写法为:
[cpp] view plaincopy
Sheets("工作表名称").Copy Before := Sheets(1) //将工作表“工作表名称”复制到第1个工作表前面
Sheets("工作表名称").Copy After := Sheets(1) //将工作表“工作表名称”复制到第1个工作表后面
而在pb中对应的写法为:
[cpp] view plaincopy
int li setnull(li)
Sheets("工作表名称").Copy(Sheets(1), li) //将工作表“工作表名称”复制到第1个工作表前面
Sheets("工作表名称").Copy(li, Sheets(1)) //将工作表“工作表名称”复制到第1个工作表后面


发布评论