PB操作Excel详解文档格式.docx
《PB操作Excel详解文档格式.docx》由会员分享,可在线阅读,更多相关《PB操作Excel详解文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
d3″).Borders
(2).Weight=3
13.设置四个边框线条的类型
eole.ActiveSheet.Range(″b3:
d3″).Borders
(2).LineStyle=1
(其中Borders参数:
1-左、2-右、3-顶、4-底、5-斜、6-斜/;
LineStyle值:
1与7-细实、2-细虚、4-点虚、9-双细实线)
14.设置页眉
eole.ActiveSheet.PageSetup.CenterHeader=″报表1″
15.设置页脚
eole.ActiveSheet.PageSetup.CenterFooter=″第&P页″
16.设置页眉到顶端边距为2厘米
eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035
17.设置页脚到底边距为3厘米
eole.ActiveSheet.PageSetup.FooterMargin=3/0.035
18.设置顶边距为2厘米
eole.ActiveSheet.PageSetup.TopMargin=2/0.035
19.设置底边距为4厘米
eole.ActiveSheet.PageSetup.BottomMargin=4/0.035
20.设置左边距为2厘米
veole.ActiveSheet.PageSetup.LeftMargin=2/0.035
21.设置右边距为2厘米
eole.ActiveSheet.PageSetup.RightMargin=2/0.035
22.设置页面水平居中
eole.ActiveSheet.PageSetup.CenterHorizontally=.t.
23.设置页面垂直居中
eole.ActiveSheet.PageSetup.CenterVertically=.t.
24.设置页面纸张大小(1-窄行851139-宽行1411)
eole.ActiveSheet.PageSetup.PaperSize=1
25.打印单元格网线
eole.ActiveSheet.PageSetup.PrintGridlines=.t.
26.拷贝整个工作表
eole.ActiveSheet.UsedRange.Copy
27.拷贝指定区域
eole.ActiveSheet.Range(″A1:
E2″).Copy
28.粘贴
eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial
29.在第2行之前插入一行
eole.ActiveSheet.Rows
(2).Insert
30.在第2列之前插入一列
eole.ActiveSheet.Columns
(2).Insert
31.设置字体
eole.ActiveSheet.Cells(2,1).Font.Name=″黑体″
32.设置字体大小
eole.ActiveSheet.Cells(1,1).Font.Size=25
33.设置字体为斜体
eole.ActiveSheet.Cells(1,1).Font.Italic=.t.
34.设置整列字体为粗体
eole.ActiveSheet.Columns
(1).Font.Bold=.t.
35.清除单元格公式
eole.ActiveSheet.Cells(1,4).ClearContents
36.打印预览工作表
eole.ActiveSheet.PrintPreview
37.打印输出工作表
eole.ActiveSheet.PrintOut
38.工作表另为
eole.ActiveWorkbook.SaveAs(″c:
\temp\22.xls″)
39.放弃存盘
eole.ActiveWorkbook.saved=.t.
40.关闭工作簿
eole.Workbooks.close
41.退出Excel
eole.quit
先把标题放到剪贴板上,再PASTE()到EXCEL中,代码如下:
:
:
clipboard(ls_value)
ao_object.range(ls_col+string
(1)+"
"
+ls_col+string
(1)).select()
ao_object.activesheet.Paste()
/*************************************************************
下面的函数f_excel_hb,可以实现“将工作簿filename_s中的工作表sheetname_s以新的工作表名称sheetname_t,复制到工作簿filename_t的最后”
1.public
function
boolean
f_excel_hb
(string
filename_s,
string
filename_t,
sheetname_s,
sheetname_t);
2.//==========================================================
3.//
合并两个工作簿中的某个工作表
4.//==========================================================
5.//
作者:
yyoinge
2011-10-12
18:
00
6.//==========================================================
7.//
将工作簿filename_s中的工作表sheetname_s以新的
8.//
工作表名称sheetname_t,复制到工作簿filename_t的最后
9.//==========================================================
10.if
not
fileexists(filename_s)
then
11.
messagebox('
'
'
工作簿【'
+
filename_s
】
(源)不存在'
)
12.
return
false
13.end
if
14.if
fileexists(filename_t)
15.
filename_t
(目标)不存在'
16.
17.end
18.long
ll_val
19.//声明ole对象
20.oleobject
ole_object_s
21.//创建ole对象
22.ole_object_s=create
oleobject
23.//连接到excel
24.ll_val
=
ole_object_s.connecttonewobject("
excel.application"
25.if
<
>
0
26.
ole无法连接Excel!
27.
goto
error
28.end
29.//打开源和目标工作簿
30.ole_object_s.workbooks.open(filename_s)
31.ole_object_s.workbooks.open(filename_t)
32.string
ls_t
33.ls_t
34.filename_s
of_splitpath(filename_s,
2)
35.filename_t
of_splitpath(filename_t,
36.//隐藏excel
37.ole_object_s.visible
38.ole_object_s.displayalerts
39.int
n,t
40.int
li
41.boolean
isexists=false
42.oleobject
lworksheet
43.//判断源工作簿中的工作表是否存在
44.try
45.
ole_object_s.Workbooks(filename_s).sheets(sheetname_s)
46.
isexists
true
47.catch(
oleruntimeerror
er)
48.
49.end
try
50.if
51.
】中工作表不存在工作表['
sheetname_s
]'
52.
53.end
54.//当目标工作簿中存在sheet名为sheetname_t的工作表时,为sheetname_t增加后缀
(1),然后再重复进行判断,直到表名不存在
55.isexists
56.do
while
57.
58.
ole_object_s.Workbooks(filename_t).sheets(sheetname_t)
59.
60.
sheetname_t
+=
(1)'
61.
catch(
er1)
62.
63.
end
64.loop
65.//进行工作表合并(移到目标工作簿的最后)
66.//int
67.setnull(li)
68.ole_object_s.workbooks(filename_s).Sheets(sheetname_s).copy(li,
ole_object_s.workbooks(filename_t).Sheets(long(ole_object_s.workbooks(filename_t).Sheets.count)))
69.//重命名工作表
70.ole_object_s.workbooks(filename_t).sheets(long(ole_object_s.workbooks(filename_t).Sheets.count)).name
71.//保存目标工作簿
72.isexists
73.//ole_object_s.visible
74.//ole_object_s.displayalerts
75.//messagebox('
76.try
77.
ole_object_s.workbooks(filename_t).save()
78.catch(
er2)
79.
提示'
无法保存工作簿【'
】'
80.
81.end
82.if
83.//关闭工作簿
84.ole_object_s.workbooks(filename_s).close
85.ole_object_s.workbooks(filename_t).close
86.//退出excel
87.ole_object_s.workbooks.close
88.ole_object_s.Application.quit();
89.//断开连接
90.ole_object_s.disconnectobject();
91.//注销ole对象
92.destroy
ole_object_s;
93.return
94.error:
95.ole_object_s.workbooks(filename_s).close
96.ole_object_s.workbooks(filename_t).close
97.ole_object_s.workbooks.close
98.ole_object_s.Application.quit();
99.ole_object_s.disconnectobject();
100.destroy
101.return
102.
103.
104.end
/**********************************************************/
/*函数名称:
uf_dwsaveas_excel
功能:
将数据窗口数据导出EXCEL文件,并将EXCEL文件默认英文标题替换成中文。
参数:
datawindowdatawin,为用户要导出数据窗口的数据窗口控件名
返回值:
integer1,success;
-1,error
流程描述:
(原程序)先用saveas()倒出为excel文件,再替换表头为中文名
(新程序)直接用saveasAscii()倒出为excel文件
原因:
为提高程序的可读性作了少量的修改(如:
增加注释、改变排版风格等)
*/
/***************以下程序将导出为EXCEL文档******************/
integerli_rtn,ii,li_asc
stringls_name,ls_pathname
booleanlb_exist
ifdatawin.RowCount()<
1then
MessageBox("
提示信息"
"
请先检索数据再导出至Excel!
)
return-1//error
endif
li_rtn=GetFileSaveName("
保存文件"
ls_pathname,ls_name,"
xls"
Excel文件(*.xls),*.xls"
ifli_rtn=1then
lb_exist=FileExists(ls_pathname)
IFlb_existTHEN
li_rtn=MessageBox("
保存"
ls_pathname+"
已经存在,是否覆盖?
Exclamation!
YesNo!
//当文件存在用户选择覆盖,或是文件本就不存在时。
注意变量li_rtn
li_rtn=datawin.SaveAsAscii(ls_pathname)
导出数据成功!
return1
else
错误信息"
导出数据失败!
return-1
//在程序中调式没有问题,可以把数据窗口原样的输出,包括中英文,如果你用这个函数导出来的
也是乱码的话,可能是你的操作系统有问题了
函数SaveAsAscii()用法:
()函数。
它允许输出数据窗口的可视部分为文本格式,组、交叉报表、计算域等被保存为输出数据的一部分。
在很多的情况下,我们需要将书局窗口中的数据保存为其他应用程序的格式(比如:
MSExcel,Word,email等).为此Powerbuilder提供了SaveAs函数,然而使SaveAs保存数据窗口为Execl格式时有一些缺点,就是它无法保存我们所见到的格式,一些图形、交叉报表、计算域等等都被丢弃,它仅仅保存了数据窗口buffer中的数据。
为了输出交叉报表、组、和计算域等等可视的数据,PowerBuilder6.5(afterbuild444)提供了新的函数解决这些缺陷,它是:
SaveAsAscii()函数。
下面讨论该函数:
描述:
将数据窗口或数据存储中的内容保存为ASCII文本文件
适用于:
数据窗口和DataStore对象
符号:
dwcontrol.SaveAsAscii(filename{,separatorcharacter{,quotecharacter{,lineending}}})
其中:
dwcontrol位数据窗口或DataStore的名字
filename:
要保存的文件名;
separatorcharacter(optional):
分割各个数据的字符串,缺省为tab
quotecharacter(optional):
包围值的字符串,缺省为空;
lineending(optional):
放在每行末尾的字符串,缺省为回车character(~r~n)
下面的例子显示将数据窗口中的数据保存到文件monthly.txt,每个数据以'
|'
分割
dw_4.saveasascii("
monthly.txt"
|"
)
在数据之间使用分割符是比较好的注意,因为缺省的tab字符可能会在导入excel时出问题。
在导入Excel时他会提示您,您数据中使用何种分割符。
为了导入到Excel,只需在中Excel打开文件,您可能会看到一个wizard窗口定义正确的分割符即可。
下例显示一个用saveasascii()函数导出的文件,使用SaveAs函数时是不可能有如此结果的。
PB的dw导出到excel文件(使用saveasascii)
PB编程收集2007-07-1711:
01:
29阅读264评论0
字号:
大中小
订阅
PB的dw导出到excel文件(使用saveasascii)
/**********************************************************/
/*函数名称:
uf_dwsaveas_excel
功能:
参数:
datawindowdatawin,为用户要导出数据窗口的数据窗口控件名
返回值:
-1,error
流程描述:
先用saveasAscii()倒出为excel文件,再替换表头为中文名
设计人:
yanhui2003年11月
修改人:
叶文林2004.4.8
增加注释、改变排版风格等)*/
/***************以下程序将导出为EXCEL文档****