pb,word,表格

合集下载

PB操作Excel文件

PB操作Excel文件

PB调用EXCEL的操作不失为一种好的报表输出方式2009-05-15 23:17 928人阅读评论(0) 收藏举报对于较为中国化的报表,虽然后dw这个坚强后盾,但是也难不住繁复疲劳的应对。

不过我们可以知道,数据的输出,都是居于table的栏位或者计算字段。

只是很多统计的模式和展现模式不同。

我在一年前作完一个系统,可是客户几乎隔三差五有新的东东要输出报表。

终于我发现。

让客户先在excel里弄好,然后再写程序来输出也是一个不错的方法。

关键是,客户给的东西不必要再进自己的系统,所以数据不会发生什么问题。

如果本身软件有任何问题,那能从excel里的写的结果很容易看得出来。

虽然写excel表格要花很多时间,但是减少了输入导入和输出的一些麻烦。

转载excel操作大全:powerbuilder操作excel命令大全(例子的有些地方不对!)2006-12-04 16:431.创建Excel对象eole=CREATEOBJEC T(′Excel.application′)2.添加新工作簿eole.Workbooks.add3.设置第3个工作表为激活工作表eole.Worksheets(″sheet3″).Activate4.打开指定工作簿eole.Workbooks.Open(″c:/temp/ll.xls″)5.显示Excel窗口eole.visible=.t.6.更改Excel标题栏eole.Caption=″VFP应用程序调用Microsoft Excel″7.给单元格赋值eole.cells(1,4).value=XM(XM为数据库字段名)8.设置指定列的宽度(单位:字符个数)eole.ActiveSheet.Columns(1).ColumnWidth=59.设置指定行的高度(单位:磅)eole.ActiveSheet.Rows(1).RowHeight=1/0.035(设定行高为1厘米,1磅=0.035厘米)10.在第18行之前插入分页符eole.Worksheets(″Sheet1″).Rows(18).P ageBreak=111.在第4列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=012.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=313.设置四个边框线条的类型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.03517.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.03518.设置顶边距为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-窄行8 5 11 39-宽行14 11) eole.ActiveSheet.PageSetup.PaperSize=125.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷贝整个工作表edRange.Copy27.拷贝指定区域eole.ActiveSheet.Range(″A1:E2″).Copy28.粘贴eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial 29.在第2行之前插入一行eole.ActiveSheet.Rows(2).Insert30.在第2列之前插入一列eole.ActiveSheet.Columns(2).Insert31.设置字体eole.ActiveSheet.Cells(2,1)=″黑体″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.PrintPreview37.打印输出工作表eole.ActiveSheet.PrintOut38.工作表另为eole.ActiveWorkbook.SaveAs(″c:/temp/22.xls″) 39.放弃存盘eole.ActiveWorkbook.saved=.t.40.关闭工作簿eole.Workbooks.close41.退出Exceleole.quit42 合并string worksheet,beginRowcol,EndRowColMyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Select MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Merge43 sheet改名MyOLE.ActiveWorkBook.Sheets(olename).selectMyOLE.ActiveWorkBook.Sheets(olename).name=newnameMyOLE=Create OLEObjectConnectErr=MyOLE.ConnectToNewObject ("excel.Application")MyOLE.visible=false//打开指定的XLS文件激活workbooksMyOLE.application.workbooks.Open (FilePath)//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。

(完整word版)ROE和PB(净资产收益率和市净率)

(完整word版)ROE和PB(净资产收益率和市净率)

ROE和PB(净资产收益率和市净率)ROE和PB 如果一家公司的净资产收益率长期稳定在5%,那么以1倍PB买入,就相当于买入一份年复利为5%的理财产品,己经具有投资价值。

如果该公司的PB是2倍,那么年收益率就约为2.5%,没有投资意义。

根据年复利率5%的标准,我们可以通过ROE与PB两个指标进行估值。

ROE越高,PB也应该越高。

那么,现在有两家公司,A公司ROE长期稳定在5%左右,1倍市净率;F公司的ROE 长期稳定在30%左右,6倍市净率;究竟买入那家公司更好呢?简单的看,买入A公司一年以后的收益率在5%,F 公司的收益率也是5%.但从长远来看,复利威力就表现出来了。

反过来我们是否可以这样认为,高ROE必然对应着高PB,因为ROE/PB=全社会平均投资保酬率。

如果某一年全社会平均投资保酬率是10%,而F公司能有30%的净资产收益率,那么任何PB低于3倍的价格都会引来投资需求,从而推升股价,使之投资该公司的投资回报率趋于10%。

当然,一家企业有高ROE必然会引来竞争者,如果这家企业没有很宽的护城河,其高ROE就难以为继,从而导致其ROE的回落。

随着ROE的回落,PB也随之下跌,所以以高PB买入一家企业会面临业绩和估值双杀的风险,不可不查矣!反之,以低PB买入一家低ROE的企业,随着这家企业的业绩上升,其ROE也不断上升,从而带来PB的上涨,投资者可以获得业绩和估值的双击!总而言之,业绩看ROE,估值看PB,是我们投资制胜的不二法则。

这是我从基金的净值和净值增长率中得到的启示。

我发现,开放式基金我们都是以1倍PB进行申购的,而对于封闭式基金我们可以折价即PB小于1倍的价格买到,而股票能以PB小于1倍的价格买到的机会就不多见了,也就是说股票被低估的机会其实并不多!*************************************************** ****风险提示:产品涉及各种信息、资讯以及投资建议,仅作为投资者进行证券投资的参考和借鉴,投资者自行承担据此进行投资所产生的风险及后果。

在PB中利用OLE技术实现Word文档的自动生成

在PB中利用OLE技术实现Word文档的自动生成

在PB中利用OLE技术实现Word文档的自动生成
张涛;罗诗途
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2001(000)011
【摘要】PowerBuilder(以下简称PB)是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速开发出一个数据管理系统,但是由于数据窗口是开发人员设计的,虽然具有打印功能,但是格式在设计的时候定死,用户要修改很困难。

尤其在中国,领导很注重报表的格式,不同的领导喜欢不同类型的报表,所以必须提高报表的样式的多样性。

【总页数】2页(P23-24)
【作者】张涛;罗诗途
【作者单位】无
【正文语种】中文
【中图分类】TP3
【相关文献】
1.在PB中利用OLE技术将数据保存到WORD文档 [J], 张占昭;王晴
2.用OLE技术实现复杂曲面钣金图自动生成 [J], 刘志红;蒋先刚
3.在PB中利用OLE技术解决多文档问题 [J], 李淑芝;罗承祥;温梦姣
4.利用OLE对象实现Word文档操作 [J], 刘友生
5.利用DDE实现VB程序自动生成Word文档 [J], 楼力律;林庚
因版权原因,仅展示原文概要,查看原文内容请购买。

如何在Word文档中插入表和数据分析

如何在Word文档中插入表和数据分析

如何在Word文档中插入表和数据分析Word是一款常用的文字处理软件,除了编辑文字,还可以插入表格和进行数据分析。

本文将向您介绍在Word文档中插入表格和进行数据分析的方法。

一、插入表格在Word中插入表格可以方便地展示数据和信息。

以下是插入表格的步骤:1. 打开Word文档,定位光标的位置,选择“插入”选项卡。

2. 在选项卡中,找到“表格”一栏,点击“表格”图标。

3. 弹出的下拉菜单中,选择“插入表格”。

4. 在弹出的对话框中,设置表格的行数和列数,然后点击“确定”。

通过以上四个简单的步骤,您就可以在Word文档中插入一个空白表格了。

此时,您可以在表格中输入数据或者进行数据分析。

二、数据分析Word提供了一些基本的数据分析功能,方便用户对表格中的数据进行统计和分析。

以下是一些常用的数据分析方法:1. 求和函数在Word表格中,可以使用SUM函数来对数值列进行求和。

选择需要进行求和操作的单元格,然后在公式栏中输入“=SUM(选取的单元格范围)”,按下回车键即可得到求和结果。

2. 平均值函数同样地,在Word表格中,使用AVERAGE函数可以计算数值列的平均值。

选择需要进行平均值计算的单元格,然后在公式栏中输入“=AVERAGE(选取的单元格范围)”,按下回车键即可得到平均值结果。

3. 统计图表Word还提供了丰富多样的统计图表,方便用户对数据进行可视化展示。

在需要插入统计图表的位置点击鼠标右键,选择“插入图表”,在弹出的对话框中选择需要的图表类型,并设置数据范围,最后点击“确定”即可插入统计图表。

总结:以上就是在Word文档中插入表格和进行数据分析的方法。

通过插入表格,用户可以以表格形式清晰地展示数据和信息;而通过数据分析,用户可以方便地对数据进行统计和可视化展示。

无论是工作报告、学术论文还是其他类型的文档,这些功能都将为您提供一种高效、直观的数据处理方式。

在PB中嵌入Word文档

在PB中嵌入Word文档

在PB中嵌入Word文档国防科技大学3院5队98研张涛罗诗途PB(PowerBuilder) 是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速地开发出一个数据管理系统。

现在许多单位很注重报表的格式,需要不同类型的报表,所以必须提高报表格式的多样性。

虽然我们可以利用PB设计出具有打印功能的窗口,但是由于格式是事先规定好的,用户很难根据需要进行修改。

Word是大家熟悉的一种文字处理工具,具有强大的编辑与打印功能。

如果能够将数据源动态地导入到Word文档中,然后在Word中调整和打印,用户的自由度就比较大。

下面笔者以生成用户话费清单为例,介绍一种通过OLE技术嵌入Word文档的方法。

创建模板文件首先,我们建立一个报表样式的模板文件,取名为"用户清单模板.dot"。

根据需要录入静态文本,并在需要插入动态数据的地方插入"书签"。

"书签"名字与PB 数据源中列的名字一致,如图1所示。

图1 模板文件编写程序1.数据窗口d_user和d_cost,分别取自移动电话用户基本信息表和用户话费记录表,数据模型如2. PB和Word通信时,如果向Word中输出汉字,则该汉字后面会出现与汉字个数相同的乱码,所以必须编写函数处理这种情况。

定义全局函数integerf_getcnnum(string aString)。

代码如下:string ls_ch //临时单元string ls_SecondSecTable //存放所有国标二级汉字读音integer li_num = 0 //返回值integer i,jfor i = 1 to Len(aString)ls_ch = Mid(aString,i,1)if Asc(ls_ch) >= 128 then //判定是汉字li_num++i = i+1end ifnextreturn li_num3.创建窗口w_costlist,其中包含两个数据窗口dw_1和dw_2,分别对应数据窗口d_user和d_cost。

PB通过OLEObject使用Word

PB通过OLEObject使用Word

PB通过OLE Object使用Word1 引言在编程的时候,常常需要访问Word文档。

除了使用DDE之外,PowerBuilder还有一种操作Word的方式,就是通过OLEObjcet和OLEControl。

OLEObject是不可视的OLE对象,而OLEControl则是可视的窗口控件。

由于OLEObject较后者更灵活方便,如果不是必须在窗口上显示Word文档内容,使用前者是更好的选择。

程序开发员在使用OLE连接Word文档的时候,常常遇到这样两个问题:第一:如果某文档已经打开,再使用程序调用的时候,会产生程序运行错误;第二:经常发现创建的WinWord.exe进程没有能够正常终止。

2 分析下面我们来分析这两个错误产生的原因。

对于第一个错误,往往是由于使用OLEObjectVar.ConnectToObject(“<FileName>”)的时候,<FileName>这个文件已经打开了。

此时使用ConnectToObject会造成错误。

对于第二个错误,一般是使用OLEObjectVar.ConnectToNewObject (“Word. Application”) 创建了新的Winword.exe进程,但是没有执行关闭这个新的应用的操作。

3 解决经过分析,我们可以确定了如何解决PB调用Word的程序的问题。

打开文档首先,我们使用<OLEObjectVar>.ConnectToObject(“<WordFileName>”)来打开一个空Word 文档。

打开成功后,使用<OLEObjectVar>.Application获得对Word.Application的引用并设置Applicatin.Visible=TRUE,并关闭刚才打开的空文档;然后,使用Word.Application的Open方法打开要使用的文档。

这样的方法打开文档,如果当前有正在运行的Windows.exe进程,就不必打开新的进程,而是使用当前的进程,并且可以成功地对当前的进程获得引用。

pb报表制作powerbuilder报表制作教程pb报表编制教程步骤

pb报表制作powerbuilder报表制作教程pb报表编制教程步骤

pb报表制‎作powe‎r buil‎d er报表‎制作教程p‎b报表编制‎教程步骤在通常的管‎理信息系统‎开发过程中‎,总是有没完‎没了的报表‎需要制作,调试报表花‎费的时间也‎是最多而且‎乏味,还常常不能‎满足客户的‎要求。

如果能够让‎用户自己调‎整报表的格‎式和内容,然后将它保‎存下来,程序下次启‎动时若能自动‎调用保存了‎的报表格式‎那就方便多‎了。

实现原理Power‎B uild‎e r中有一‎种以PSR‎为后缀的特‎殊的保存报‎表的文件格‎式(本文简称P‎S R 文件),数据窗口可‎以直接读取‎P SR文件‎生成报表,而程序通过‎生成PSR‎文件,就可以实现‎动态报表格‎式的保存。

首先,通过设置数‎据窗口对象‎(datao‎b ject‎)中的文本、列等的Re‎s izea‎b le和m‎o veab‎l e属性为‎1来实现对‎象位置的拖‎动控制,通过数据窗‎口的Mod‎i fy函数‎实现对象值‎的更改(包括增加和‎删除)。

其次要保存‎报表格式。

在一个应用‎中,数据窗口对‎象的名称总‎是惟一的,将每一个数‎据窗口对象‎转化成PS‎R文件存于‎数据库表中‎。

在窗口打开‎时,程序先校验‎报表格式是‎否存在。

如果存在,将报表格式‎读出来放在‎一个临时文‎件当中,然后设置数‎据窗口(dataw‎i ndow‎)的数据对象‎(datao‎b ject‎)为这个报表‎文件,并提取数据‎;如果不存在‎,直接提取数‎据即可。

实现过程1. 建立一个数‎据库表用以‎保存报表格‎式文件,各个字段定‎义如下:2. 建立一个窗‎口w_te‎m p。

定义实例变‎量如下:strin‎g is_dw‎t ype,is_dw‎o bjec‎t//保存报表中‎对象的类型‎及名称3. 在窗口的O‎p en事件‎中加入如下‎代码, 校验报表格‎式是否存在‎,如果存在,读取定义好‎的报表格式‎到数据窗口‎。

blob emp_p‎i clong ll_ha‎n dlestrin‎g ls_dw‎o bjec‎t,ls_re‎p ortf‎i le,ls_pa‎t hls_dw‎o bjec‎t = dw_pr‎i nt.datao‎b ject‎//判断是否存‎在该数据窗‎口的报表格‎式selec‎t count‎(*) into:ll_co‎u nt from dyn_r‎e port‎where‎dwobj‎e ct=:ls_dw‎o bjec‎t;if ll_co‎u nt>0 then//读取报表格‎式文件到大‎文本变量selec‎t blob‎memo into:emp_p‎i c from dyn_r‎e port‎where‎dwobj‎e ct=:ls_dw‎o bjec‎t;//创建PSR‎临时文件并‎保存到硬盘‎ls_re‎p ortf‎i le =‘\temp7‎089.psr’ll_ha‎n dle = FileO‎p en(is_re‎p ortf‎i le,Strea‎m Mode‎!,write‎!,LockW‎r ite!,Repla‎c e!) FileW‎r ite(ll_ha‎n dle,emp_p‎i c)FileC‎l ose(ll_ha‎n dle)dw_pr‎i nt.datao‎b ject‎= ls_re‎p ortf‎i ledw_pr‎i nt.settr‎a nsob‎j ect(sqlca‎)elseDw_pr‎i nt.settr‎a nsob‎j ect(sqlca‎)End ifDw_pr‎i nt.retri‎e ve()4. 保存报表格‎式,这可以通过‎C b_sa‎v erep‎o rt按钮‎的clic‎k ed事件‎实现。

(完整word版)使用Word制作电子表格初级教程

(完整word版)使用Word制作电子表格初级教程

一张简洁明了的报价表,给买家赏心悦目的感受,也可以事半功倍呢,呵呵加油!第一步,大家双击打开Word软件,第二步,新建一个空白文档。

点击窗口左上角的“文件”,在下拉菜单中,选择“新建”选项,我们建立了空白文档,下面就可以来设计制作咱们的表格文档了。

第三步,进行页面设置。

我们的打印纸一般常用的有A4纸和16开的纸,我以A4纸(比16开稍大一些)为例。

点击窗口左上角的“文件”,在下拉菜单中选择“页面设置”选项,点击打开,在“页面设置”对话框中,首先选择“纸张”选项卡,在“纸张大小”的下拉框中选定合适的纸张。

纸张大小设置好之后,再选择“页边距”选项卡,设置你所需要的纸张上下左右的页边距。

然后选择页面的“方向”中的“纵向”,全部设置好之后,按“确定”。

到此页面设置基本完成。

第四步,可以开始输入文字内容了,首先设置“表头”1.表头的字体(一般是楷体),2.字号(一般使用2号字),3.粗体(点击字母“B ”,4.居中对齐,接下来,就可以输入表头文字了,切换输入法,输入“‘小爱美食’产品批发价目表”表头输入完毕,下面就开始插入表格了。

在插入表格之前,大家再一次把“字体”、“字号”、“粗细”改一下,改为“宋体”、“四号”、“不加粗(只要再点一下'B')第五步,插入表格。

点击导航栏“表格”菜单,在下拉菜单中选择“插入”,再选择二级菜单里的“表格”。

在弹出框里,设置好行数和列数,下面设置行数和列数,再点“确定”。

这样表格就基本出来了,接下来,就可以在表格里填写数据了。

这时候大家可能会发现,每一个单元格的宽度都是一样的,而实际上我们是需要有些格子宽些,有些格子窄些,这样安排才更美观、合理。

大家不要急,方法很简单,大家一边看小爱的文字解说,一边看(下图)。

你也可以用鼠标跟着一起做哦。

大家把鼠标指针放到表格的竖线上,会发现鼠标指针变成了左右双箭头,这时候按下鼠标左键不放松,就会出现一条从上到下的虚线,这时候按住左键向左右拖动,表格的竖线条就会跟着鼠标一起左右移动。

PB基础教程

PB基础教程

软件开发工具_pb_自学指导孙勇第一章 PowerBuilder简介一、目的要求1.本课程在软件课程中的作用;2.信息系统的开发模式;3.掌握PowerBuilder的主要特性;4.初步掌握PowerBuilder开发环境;5.了解应用程序开发步骤;6.熟悉PowerBuilder的安装方法。

二、重点难点重点是PowerBuilder开发环境。

第一章PowerBuilder简介本章主要内容:本章中,首先扼要地介绍本课程在软件课程中的作用和信息系统的开发模式 PowerBuilder的主要特性,然后阐述集成开发环境的组成、各画板的功能、作用、定制开发环境的方法、对象的基本概念等,并在章尾介绍本课程的教学内容以及开发PowerBuilder应用程序的基本步骤。

自学内容:1.1本课程在软件课程中的作用在计算机专业中,软件教学占有非常重要的位置。

为了满足计算机职业岗位群的需要,近年来,我们对计算机网络专业和计算机程序员专业中的软件课程进行了相应的改革。

通过学习Word、Excel、FrontPage等常用软件使学生学会计算机的使用方法;通过学习C语言程序设计、数据结构等课程使学生掌握基本的程序设计方法;通过学习SQL Server使学生掌握网络数据库的设计方法和使用方法;通过学习网页制作和Java语言使学生能够编写网站应用程序;通过学习PB使学生能够编写客户端应用程序;通过学习软件工程使学生能够懂得软件开发的全过程,掌握编写软件的规范,为学生在“软件工厂”从事软件工作打下基础。

从以上分析可知,PB课程属于与职业岗位群直接有关的课程,在整个软件课程体系中占有比较重要的位置。

不同的软件课程应该采用不同的教学方法,根据软件的特点,我们把软件课程分成三种不同类型:1.程序设计类型。

这类课程需要讲的内容较多,讲的内容相对也比较完整,使用传统的“课堂教学+课后习题+上机实验”教学方式即能满足教学要求。

2.交互类型。

word文档表格模板

word文档表格模板

word文档表格模板在日常工作和学习中,我们经常需要使用Word文档进行文字编辑和排版。

而在编辑文字的过程中,表格是一种非常常见和有用的工具,可以用于数据整理、信息对比、计划编排等各种场景。

为了更高效地使用Word表格功能,我们可以利用一些预设的表格模板,以节省时间和提高工作效率。

Word文档提供了丰富的表格模板,可供用户使用。

下面将介绍几种常用的表格模板,并针对它们的功能和应用场景进行详细描述。

1. 总结表格模板总结表格模板适用于整理、总结数据或信息的场景。

比如,你要整理一些销售数据,可以选择这种模板。

该模板通常包括表头、数据行、列汇总等部分,能够清晰地呈现数据,并方便进一步的数据分析和统计。

你可以根据实际需要增加或删除行、列,调整表格的样式和格式。

2. 任务分配表格模板任务分配表格模板适用于团队协作或工作流程中的任务分配和进度跟踪。

比如,你的团队需要完成一个项目,可以使用任务分配表格模板来记录和分配每个成员的任务,并跟踪任务的完成进度。

该模板通常包括任务名称、责任人、截止日期、进度等字段,使得团队成员能够清楚了解自己的工作内容和进度情况。

3. 会议议程表格模板会议议程表格模板适用于组织和记录会议的议程和内容。

比如,你要组织一个会议,可以使用会议议程表格模板来规划和安排会议的议程,包括会议主题、议程内容、时间安排等等。

该模板能够帮助参会人员明确会议的目标和议程,提高会议的效率和成果。

4. 资产清单表格模板资产清单表格模板适用于管理和跟踪公司或个人的资产信息。

比如,你需要对公司的固定资产进行清点和管理,可以使用资产清单表格模板来记录和跟踪资产的种类、数量、价值等信息。

该模板可以帮助你更好地管理和维护资产,及时了解资产的情况和变动。

以上仅是几种常见的Word表格模板,实际上Word还提供了许多其他类型的模板供我们选择和使用。

在使用表格模板时,我们可以根据实际需求选择合适的模板,并对其进行个性化设置和调整。

PB与外部函数参数类型对应表

PB与外部函数参数类型对应表
longlong
float
32位单精度
real
double
64位双精度
double
struct
结构体
structure
其结构体大小为各元素字节数之和(指针为2字节windows32),应该不是内存对齐的字节数之和,结构体内元素LPSTR指针类型且其中包含null值的,可以定义为blob类型并分配空间(blob{100}),循环提取数据,因为pb的string函数遇到null会自动停止,但后面可能还有数据
NPSTR
16位指针

用于windows32位系统
LPSTR
32位指针
string
用于windows32位系统,参数声明时需加ref
其它
32位指针
long
char*
Byte[]
blob
char
8位带符号
char
string
可ring类型,可以将其定义为blob类型,并分配足够的空间(blob{100}),通过blob{1}(其初始值为null)进行连接,不能通过setnull( )函数处理null值
HANDLE
32位无符号
ulong或usigned long
用于windows32位系统
byte
8位带符号
char或byte
short
16位带符号
int或integer
usigned short
16位无符号
uint或usigned integer
WORD
16位无符号
uint或usigned integer
外部语言数据类型大小pb数据类型说明bool或boolean16带符号boolean对于windows3216位带符号指针lpbyte32位指针long用于windows32位系统lpdwordlpintlplonglpviodlpwordpstr16位指针用于windows32位系统npstr16位指针用于windows32位系统lpstr32位指针string用于windows32统参数声明时需加ref其它32位指针longcharbyteblobchar带符号charstring可能是32位指针方式传递string对于包含nullstring类型可以将其定义为blob类型并分blob100通过blob1其初始值为null进行连接不能通过setnull函数处理nullhandle32无符号ulong或usignedlong用于windows32位系统byte带符号char或byteshort16带符号int或integerusignedshort16无符号uint或usignedintegerword16无符号uint或usignedinteger用于windows32位系统int32带符号longusignedint32无符号ulong或usignedlonglong32带符号longusignedlong32无符号ulong或usignedlongdword32无符号ulong或usignedlonglonglong64带符号longlongfloat32单精度realdouble64双精度doublestruct结构体structure其结构体大小为各元素字节数之和指针为字节windows32应该不是内存对齐的字节数之和结构体内元素lpstr指针类型且其中包含null值的可以定blob类型并分配空间blob100循环提取数据因为pb的string函数遇到null会自动停止但后面可能还有数datedatetimetime结构体不与外部数据类型兼容注

PB操作Excel详解

PB操作Excel详解

run("notpad.exe") ////pb 运行记事本run("calc.exe") ////pb运行计算器记住:当我们用PB导出数据到EXCEL时,不管是用Saveas 还是clipboard 它输出的数据是定义了字段类型的列的数据,也就是说,不管列是可见还是不可见,只要该列定义了列属性,在查询时主缓冲区中该列有数据,则就会导出出来~用方法得到列名或其他属性也是一样的~及时隐藏了也可以得到当中间的某列给隐藏时,下次打开后它会显示在末尾的位置,但是用Saveas输出数据时,不管它是否隐藏,是否改变了位置,它仍可输出数据而且位置还是不变的~也就是说没有改变数据窗口对象的源,数据窗口对象上显示的列位置只会影响我们在程序界面上看到的位置,而不会影响它在后台存储的实际位置。

但是这样会改变界面显示的位置,记住,没有改变源如何用PB程序在excel画表格边框线,如何改变文字大小1.创建Excel对象eole=CREATEOBJECT(′Excel.application′)2.添加新工作簿eole.Workbooks.add3.设置第3个工作表为激活工作表eole.Worksheets(″sheet3″).Activate4.打开指定工作簿eole.Workbooks.Open(″c:\temp\ll.xls″)5.显示Excel窗口eole.visible=.t.6.更改Excel标题栏eole.Caption=″VFP应用程序调用Microsoft Excel″7.给单元格赋值eole.cells(1,4).value=XM(XM为数据库字段名)8.设置指定列的宽度(单位:字符个数)eole.ActiveSheet.Columns(1).ColumnWidth=59.设置指定行的高度(单位:磅)eole.ActiveSheet.Rows(1).RowHeight=1/0.035(设定行高为1厘米,1磅=0.035厘米)10.在第18行之前插入分页符eole.Worksheets(″Sheet1″).Rows(18).PageBreak=111.在第4列之前删除分页符eole.ActiveSheet.Columns(4).PageBreak=012.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=313.设置四个边框线条的类型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.03517.设置页脚到底边距为3厘米eole.ActiveSheet.PageSetup.FooterMargin=3/0.03518.设置顶边距为2厘米eole.ActiveSheet.PageSetup.TopMargin=2/0.03519.设置底边距为4厘米eole.ActiveSheet.PageSetup.BottomMargin=4/0.03520.设置左边距为2厘米veole.ActiveSheet.PageSetup.LeftMargin=2/0.03521.设置右边距为2厘米eole.ActiveSheet.PageSetup.RightMargin=2/0.03522.设置页面水平居中eole.ActiveSheet.PageSetup.CenterHorizontally=.t.23.设置页面垂直居中eole.ActiveSheet.PageSetup.CenterVertically=.t.24.设置页面纸张大小(1-窄行8511 39-宽行1411) eole.ActiveSheet.PageSetup.PaperSize=125.打印单元格网线eole.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷贝整个工作表edRange.Copy27.拷贝指定区域eole.ActiveSheet.Range(″A1:E2″).Copy28.粘贴eole.WorkSheet(″Sheet2″).Range(″A1″).PasteSpecial 29.在第2行之前插入一行eole.ActiveSheet.Rows(2).Insert30.在第2列之前插入一列eole.ActiveSheet.Columns(2).Insert31.设置字体eole.ActiveSheet.Cells(2,1)=″黑体″32.设置字体大小eole.ActiveSheet.Cells(1,1).Font.Size=2533.设置字体为斜体eole.ActiveSheet.Cells(1,1).Font.Italic=.t.34.设置整列字体为粗体eole.ActiveSheet.Columns(1).Font.Bold=.t.35.清除单元格公式eole.ActiveSheet.Cells(1,4).ClearContents36.打印预览工作表eole.ActiveSheet.PrintPreview37.打印输出工作表eole.ActiveSheet.PrintOut38.工作表另为eole.ActiveWorkbook.SaveAs(″c:\temp\22.xls″)39.放弃存盘eole.ActiveWorkbook.saved=.t.40.关闭工作簿eole.Workbooks.close41.退出Exceleole.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, string sheetname_s, string sheetname_t);2.//==========================================================3.// 合并两个工作簿中的某个工作表4.//==========================================================5.// 作者:yyoinge 2011-10-12 18:006.//==========================================================7.// 将工作簿filename_s中的工作表sheetname_s以新的8.// 工作表名称sheetname_t,复制到工作簿filename_t的最后9.//==========================================================10.if not fileexists(filename_s) then11. messagebox('','工作簿【' + filename_s + '】(源)不存在')12.return false13.end if14.if not fileexists(filename_t) then15. messagebox('','工作簿【' + filename_t + '】(目标)不存在')16.return false17.end if18.long ll_val19.//声明ole对象20.oleobject ole_object_s21.//创建ole对象22.ole_object_s=create oleobject23.//连接到excel24.ll_val = ole_object_s.connecttonewobject("excel.application")25.if ll_val <> 0 then26. messagebox('','ole无法连接Excel!')27.goto error28.end if29.//打开源和目标工作簿30.ole_object_s.workbooks.open(filename_s)31.ole_object_s.workbooks.open(filename_t)32.string ls_t33.ls_t = filename_t34.filename_s = of_splitpath(filename_s, 2)35.filename_t = of_splitpath(filename_t, 2)36.//隐藏excel37.ole_object_s.visible = false38.ole_object_s.displayalerts = false39.int n,t40.int li41.boolean isexists=false42.oleobject lworksheet43.//判断源工作簿中的工作表是否存在44.try45. lworksheet = ole_object_s.Workbooks(filename_s).sheets(sheetname_s)46. isexists = true47.catch( oleruntimeerror er)48. isexists = false49.end try50.if isexists=false then51. messagebox('','工作簿【' + filename_s + '】中工作表不存在工作表[' + sheetname_s + ']')52.goto error53.end if54.//当目标工作簿中存在sheet名为sheetname_t的工作表时,为sheetname_t增加后缀(1),然后再重复进行判断,直到表名不存在55.isexists = true56.do while isexists57.try58. lworksheet = ole_object_s.Workbooks(filename_t).sheets(sheetname_t)59. isexists = true60. sheetname_t += '(1)'61.catch( oleruntimeerror er1)62. isexists = false63. end try64.loop65.//进行工作表合并(移到目标工作簿的最后)66.//int li67.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 = sheetname_t71.//保存目标工作簿72.isexists = true73.//ole_object_s.visible = true74.//ole_object_s.displayalerts = true75.//messagebox('', '')76.try77. ole_object_s.workbooks(filename_t).save()78.catch( oleruntimeerror er2)79. messagebox('提示', '无法保存工作簿【' + filename_t + '】')80. isexists = false81.end try82.if not isexists then goto error83.//关闭工作簿84.ole_object_s.workbooks(filename_s).close85.ole_object_s.workbooks(filename_t).close86.//退出excel87.ole_object_s.workbooks.close88.ole_object_s.Application.quit();89.//断开连接90.ole_object_s.disconnectobject();91.//注销ole对象92.destroy ole_object_s;93.return true94.error:95.ole_object_s.workbooks(filename_s).close96.ole_object_s.workbooks(filename_t).close97.ole_object_s.workbooks.close98.ole_object_s.Application.quit();99.ole_object_s.disconnectobject();100.destroy ole_object_s;101.return false102.103.104.end function/**********************************************************//*函数名称:uf_dwsaveas_excel功能:将数据窗口数据导出EXCEL文件,并将EXCEL文件默认英文标题替换成中文。

将PB数据窗口中的数据导出到EXCEL文件

将PB数据窗口中的数据导出到EXCEL文件

PB】将PB数据窗口中的数据导出到EXCEL文件我设计中只用过两种方法。

第一种:导出到默认的路径(代码中固定好的)。

核心代码是:long dwcontrol.SaveAsAscii(string filename,[string separatorcharacter(可选项,以该种格式来分隔数据,如果省略则默认为tab,)],)实例如下:if dw_1.saveasascii("C:\缺陷查询结果.xls"," ","")=1 thenmessagebox("提示信息","数据导出成功!! 文件路径为C:\缺陷查询结果.xls!")elsemessagebox("提示信息","数据导出失败!")end if第二种:这种方法要事先在指定路径建立起要导出的EXCEL文件。

下面代码是打开该文件并保存进去。

long numcols,numrows,c,rOLEObject xlapp,xlsubint ret//定义变量numcols=long(dw_1.Object.DataWindow.Column.Count)//设置行号和列号numrows=dw_1.RowCount()//获得行数xlApp=Create OLEObject//创建OLE对象ret=xlApp.ConnectToNewObject("Excel.Sheet")if ret<0 thenmessagebox("连接Excel程序失败!",string(ret))returnend if//连接Excel,并检验返回值xlApp.Application.Workbooks.Open("C:\缺陷查询结果.xls") //打开一个特定的Excel文件xlApp.Application.Visible=true//使该Excel文件可视xlsub=xlApp.Application.ActiveWorkbook.Worksheets[1]//确定第一个工作薄for c=1 to numcolsfor r=1 to numrowsxlsub.cells[r,c]=dw_1.object.data[r,c]nextnext//循环发送数据xlApp.DisConnectObject()Destroy xlApp。

PB对excel的操作

PB对excel的操作

PB对excel的操作Pb中对Excel文件的应用Oleobject ole_object//建立OLE对象ole_object=create oleobject//创建对象integer li_retli_ret=ole_object.connecttoobject( " ", "Excel.Application ")//建立连接if li_ret <> 0 then//如果Excel还没有打开,则新建。

li_ret=ole_object.ConnectToNewObject( "Excel.Application ") if li_ret <> 0thenmessagebox( "OLE错误", "OLE无法连接!错误号:"+string(li_ret))returnend ifole_object.Visible=trueend ifpointer oldpointer//设置鼠标oldpointer=setpointer(HourGlass!)ole_object.Workbooks.Add//新建工作薄ole_object.Application.DisplayAlerts=False//关闭警告消息对话框,防止提示ole_object.Application.Workbooks.Open(as_exccccccccccccc cccccccccccccccccccccel_filename)/ /打开Excel文件//ole_object.Application.ActiveWorkbook.SaveAs(as_text_fil ename,-4158)//把打开的Excel文件另存为//Text文件,第二参数表示数据以制表符TAB分隔ole_object.Application.Quit()//退出Excelole_object.activeworkbook.saved=true//放弃存盘ole_object.workbooks.close//关闭工作簿ole_object.Cells(1,1).Value=reptitleole_object.Range( 'A1 ').Selectole_object.Selection.Font.Size=24ole_object.selection.HorizontalAlignment=3//水平对齐方式: ole_object.Range( 'A1: '+f_columname(ll_colnum)+ '1 ').Selectole_object.Range( 'A1: '+f_columname(ll_colnum)+ '1 ').Mergeole_object.Columns(i).ColumnWidth=ld_widthole_object.Columns(i).HorizontalAlignment=3ole_object.Columns(i).Borders.LineStyle=1ole_object.Columns(i).Font.Bold=Trueole_object.cells(i,j).NumberFormat= "@ "ole_object.cells(i,j).Font.Bold=falseole_object.cells(i,j).value=ls_valueOLE_/doc/1517083172.html,edRange.Rows. CountSheets.Add基本操作:Ole_object.Workbooks.add//新建一个Excel文件Ole_object.Workbooks.Open( "FileName ")//打开一个已存在Excel文件Ole_object.ActiveWorkBook.Sheets( "SheetName ").Select//选择文件中一个工作表Ole_object.Application.Run( "MacroName ")//运行宏Ole_object.Application.Visible=TRUE//Excel文件可见Ole_object.Application.ScreenUpdating=true//设置可见属性②格式设置Ole_object.ActiveSheet.Columns( "A:U ").AutoFit//列宽自动调整Ole_object.ActiveSheet.Columns( "A:Z ").ColumnWidth=6.75//列宽Ole_object.ActiveSheet.Rows( "1:100 ").RowHeight=12//行高Ole_object.Application.StandardFont= "ArialNarrow ";//设置字体Ole_object.Application.StandardFontSize= "8 "//设置字号Ole_object.ActiveSheet.Font.Size= "8 "//设置字号Ole_object.ActiveSheet.Font.Bold=True//粗体Ole_object.ActiveSheet.Font.Italic=True//斜体Ole_object.ActiveSheet.Font.Underline=True//下划线Ole_object.ActiveSheet.Font.StrikeThrough=True//删除线Ole_object.ActiveSheet.HorizontalAlignment=3//水平:4靠右;3居中;2靠左Ole_object.ActiveSheet.VerticalAlignment=2//垂直:3靠下;2居中;1靠上Ole_object.ActiveSheet.cells(2,1).f/doc/1517083172.html,=?黑体?//设置字体Ole_object.ActiveSheet.cells(2,1).font.size=25//设置字体大小③工作区域操作:Ole_object.ActiveSheet.Range( "A1:Z10 ").Property=value//设置一个工作区域内的属性值Ole_object.ActiveSheet.Range( "A1:Z10 ").Merge//合并单元格Ole_object.ActiveSheet.Range( "A1:Z10 ").WrapText=False//自动换行禁止Ole_object.ActiveSheet.Range( "A1:Z10 ").Borders(b_type).Weight=i_val//b_type:1左边界;2右边界;3上边界;4下边界;5左上倾斜;6右上倾斜(以上为对单元格的操作)7左边界;8上边界;9下边界;10右边界;11内部垂直边界;12内部水平边界(以上为对区域的操作)//i_val:0无边界线;然后1,2,3。

PB数据窗口导出word

PB数据窗口导出word

Word操作之一复杂报表另存为的技巧一例向上级部门上报报表是很常见的,其中不乏有复杂报表,最近,在客户需求中有这样一例,每月都需上报报表(国家统一格式),虽然本地已有了MIS,但每月上报不得不将报表打印出来,通过邮局邮寄给上级部门,现想将报表导出成单一的文件(常见文件格式,最好能用Office打开),通过邮件上报。

起初,马上就想到了数据窗口的Saveas(),但是细分析,报表格式复杂,Saveas根本实现不了,于是想到了编程写入Excel中,同样,由于格式复杂,VBA的编程量也很大,如合并列、拆分列等,于是想到了先生成WMF文件,再贴到WORD中的办法,(上级部门不要求数据可编辑),实现效果很好。

代码如下if dw_1.rowcount() = 0 then returnint li_ret,valueoleObject lo_Word //ole对象string docname,namedvalue = GetFileSaveName("另存为", &docname, named, "DOC", &"Word文档(*.DOC), *.DOC")IF value <> 1 THENreturnend ifif FileExists(docname) thenif messagebox('提示','文件已经存在要覆盖吗?',question!,yesno!,2) = 1 thenfiledelete(docname)elsereturnend ifend if//生成WMF临时文件,这种方法不完美,应该取Windows的临时目录和空的临时文件IDif fileexists("C:\windows\temp\yyglgzyb.wmf") thenfiledelete("C:\windows\temp\yyglgzyb.wmf")dw_1.SaveAs("C:\windows\temp\yyglgzyb.wmf", WMF!, true)//打开Word文件lo_Word = CREATE OLEObjectli_Ret = lo_Word.ConnectToObject("","word.application")IF li_Ret <> 0 THEN//没有打开则新建li_Ret = lo_Word.ConnectToNewObject("word.application")if li_Ret <> 0 thenMessageBox('OLE错误','OLE无法连接,错误ID:' + string(li_Ret)+'可能是Word安装不正确!') returnend ifEND IF/////////////////////VBA,设置纸张为A3横向/////////////////////////////lo_word.Documents.Add()lo_Word.ActiveDocument.PageSetup.LineNumbering.Active = Falselo_Word.ActiveDocument.PageSetup.Orientation = 1//以下注释行为设置页边距,可以不用,使用缺省值。

PB全面控制Excel

PB全面控制Excel

PB全⾯控制ExcelPB下全⾯控制Excel红⾊部分未验证Excel对象控制创建Excel对象 OLEObjectExcelServerExcelServer=CreateOLEObject 连接ExcelExcelServer.ConnectToObject("","Excel.Application")//如果Excel还没有打开,则新建。

ExcelServer.ConnectToNewObject("Excel.Application")返回值Integer,0正常,负值为错误码断开连接Excel ExcelServer.DisconnectObject() 打开指定⼯作簿 ExcelServer.WorkBooks.Open("c:\temp\ll.xls") 添加新⼯作簿ExcelServer.WorkBooks.Add 关闭⼯作簿 ExcelServer.WorkBooks.Close 添加新的⼯作表ExcelServer.Sheets.Add 激活⼯作表“sheet3”ExcelServer.ActiveWorkBook.Sheets("sheet3").Select ⼯作表改名="课程表" 显⽰Excel窗⼝ExcelServer.Application.Visible=True 更改Excel标题栏 ExcelServer.Caption="PB应⽤程序调⽤MicrosoftExcel" ⼯作表另为 ExcelServer.ActiveWorkBook.SaveAs("c:\temp\22.xls") 放弃存盘ExcelServer.ActiveWorkBook.Saved=True 退出Excel ExcelServer.quit 单元格控制给单元格赋值 ExcelServer.Cells(1,4).Value=XM(XM为数据库字段名) 在第2⾏之前插⼊⼀⾏ExcelServer.ActiveSheet.Rows(2).Insert 在第2列之前插⼊⼀列ExcelServer.ActiveSheet.Columns(2).Insert 设置指定列的宽度(单位:英⽂字符个数) ExcelServer.ActiveSheet.Columns(1).ColumnWidth=5 设置指定⾏的⾼度(单位:磅)(设定⾏⾼为1厘⽶,1磅=0.035厘⽶) ExcelServer.ActiveSheet.Rows(1).RowHeight=1/0.035 指定边框线宽度(Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;)ExcelServer.ActiveSheet.Range("b3:d3").Borders(2).Weight=3 a到i列⾃动调整列宽ExcelServer.ActiveSheet.Columns(“a:i”).AutoFit 设置四个边框线条的类型(LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)ExcelServer.ActiveSheet.Range("b3:d3").Borders(2).LineStyle=1 合并单元格ExcelServer.ActiveSheet.Range("A1:F1”).MergeCells=True 拷贝整个⼯作表edRange.Copy 拷贝指定区域ExcelServer.ActiveSheet.Range("A1:E2").Copy 粘贴ExcelServer.WorkSheet("Sheet2").Range("A1").PasteSpecial 设置字体ExcelServer.ActiveSheet.Cells(2,1)="⿊体" 设置字体⼤⼩ExcelServer.ActiveSheet.Cells(1,1).Font.Size=25 设置字体为斜体ExcelServer.ActiveSheet.Cells(1,1).Font.Italic=True 设置整列字体为粗体ExcelServer.ActiveSheet.Columns(1).Font.Bold=True 设置整列⽔平居中ExcelServer.ActiveSheet.Columns(1).HorizontalAlignment=3 设置整⾏字体颜⾊ExcelServer.ActiveSheet.Rows(1).Font.ColorIndex=4 设置整⾏底⾊ExcelServer.ActiveSheet.Rows(2).Interior.ColorIndex=5 设置整⾏单元格中的⽂本⾃动换⾏ExcelServer.ActiveSheet.Row(1).WrapText=True 清除单元格公式ExcelServer.ActiveSheet.Cells(1,4).ClearContents 打印相关设置页眉ExcelServer.ActiveSheet.PageSetup.CenterHeader="报表1" 设置页脚ExcelServer.ActiveSheet.PageSetup.CenterFooter="第&P页" 设置页眉到顶端边距为2厘⽶ExcelServer.ActiveSheet.PageSetup.HeaderMargin=2/0.035 设置页脚到底边距为3厘⽶ExcelServer.ActiveSheet.PageSetup.FooterMargin=3/0.035 设置顶边距为2厘⽶ExcelServer.ActiveSheet.PageSetup.TopMargin=2/0.035 设置底边距为4厘⽶ExcelServer.ActiveSheet.PageSetup.BottomMargin=4/0.035 设置左边距为2厘⽶ExcelServer.ActiveSheet.PageSetup.LeftMargin=2/0.035 设置右边距为2厘⽶ExcelServer.ActiveSheet.PageSetup.RightMargin=2/0.035 设置页⾯⽔平居中ExcelServer.ActiveSheet.PageSetup.CenterHorizontally=True 设置页⾯垂直居中ExcelServer.ActiveSheet.PageSetup.CenterVertically=True 设置页⾯纸张⼤⼩(1-窄⾏851139-宽⾏1411) ExcelServer.ActiveSheet.PageSetup.PaperSize=1 在第18⾏之前插⼊分页符ExcelServer.Worksheets("Sheet1").Rows(18).PageBreak=1 在第4列之前删除分页符ExcelServer.ActiveSheet.Columns(4).PageBreak=0 打印单元格⽹线ExcelServer.ActiveSheet.PageSetup.PrintGridlines=True 打印预览⼯作表ExcelServer.ActiveSheet.PrintPreview 打印输出⼯作表 ExcelServer.ActiveSheet.PrintOut。

PB对excel的操作

PB对excel的操作

PB对excel的操作随着科技的发展,电子表格软件已经成为了工作和学习中不可或缺的工具。

而Excel作为最常用的电子表格软件之一,在个人和企业的日常操作中扮演着重要的角色。

本文将介绍PB(Peanut Butter)对Excel 的操作,包括基本操作、数据处理与分析、图表制作、公式运用等内容。

一、基本操作1. 打开与关闭工作簿PB可通过点击文件选项卡,选择“打开”命令来打开Excel工作簿。

在使用完成后,点击右上角的“关闭”按钮即可关闭工作簿。

2. 插入与删除工作表PB可在Excel中插入新的工作表,点击工作表选项卡后,在“工作表组”中选择“插入工作表”即可。

要删除工作表,PB只需选中要删除的工作表,然后点击右键选择“删除”。

3. 数据输入与编辑PB可将数据直接输入到单元格中,通过使用方向键或鼠标切换到需要编辑的单元格,然后键入相应的数据。

若需要编辑已有的数据,PB只需选中要编辑的单元格,然后直接键入新的数据。

二、数据处理与分析1. 数据筛选与排序PB可使用Excel提供的筛选功能,选择需要操作的数据范围,在“数据”选项卡中选择“筛选”按钮,然后根据需要进行筛选条件的设置。

对于数据排序,PB可通过选择需要排序的数据范围,在“数据”选项卡中选择“排序”按钮,按照指定的排序规则进行排序。

2. 数据透视表的制作PB需首先选中所要制作透视表的数据范围,然后在“插入”选项卡中点击“透视表”按钮。

在弹出的对话框中,PB可选择需要作为行、列和数据的字段,从而生成需要的透视表。

三、图表制作1. 制作柱状图PB需选中需要制作柱状图的数据范围,然后在“插入”选项卡中点击“柱状图”按钮。

在弹出的图表类型中,PB可选择适合的柱状图样式,并对图表效果进行调整。

2. 制作折线图PB需选中需要制作折线图的数据范围,然后在“插入”选项卡中点击“折线图”按钮。

在弹出的图表类型中,PB可选择适合的折线图样式,并进行必要的调整和编辑。

PB_Excel导入

PB_Excel导入
MessageBox('文件导入', '并非可选择的文件!', StopSign!)
return
END IF
oXls = CREATE OleObject
ll_Xls = oXls.ConnectToObject('','excel.application')
CHOOSE CASE ll_Xls
ls_value = oSheet.Cells(curRow, 1).Value //读取excel的内容放到变量中,cells(行,列)
IF ls_value = '' THEN Exit //如果遇到空,表示已经导入完成
ll_Row = dw_1.InsertRow(0) //给数据窗口增加行
excelok=excelserver.connecttonewobject("excel.application")
//检查返回值,以确保已成功地连接到了Excel
if excelok <> 0 then
messagebox("信息提示","连接EXCEL失败,请检查计算机中是否安装了EXCEL!")
dw_1.setitem() ...
curRow ++
LOOP
oBook.Close
DESTROY oSheet
DESTROY oBook
IF ll_Xls = -5 THEN oXls.Application.Quit
oXls.DisConnectObject()
DESTROY oXls
然后通过insert into table(字段列表) values (:变量)这样的方式来写入数据库。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

竭诚为您提供优质文档/双击可除pb,word,表格篇一:pb数据窗口导出word、excel文档dw2word,dw2xlspb数据窗口数据导出到word,excel,excel可以自定义修改excel文档的列宽对齐方式,字体样式等//dwsave2word调用oleglobaltypegf_exportdata2wordfromfunction_object endtypeforwardprototypesglobalsubroutinegf_exportdata2word(datawindowad_dat awindow)endprototypesglobalsubroutinegf_exportdata2word(datawindowad_dat awindow);stringls_filepathls_filepath=gf_getfilesavename()oleobjectoleobjectwordoleobjectword=createoleobject//连接wordifoleobjectword.connecttonewobject("word.applicatio n")0thenmessagebox("提示","ole连接错误!") returnendifoleobjectword.visible=false//word文档在操作数据过程中是否可见longcol_colnum,col_rownumconstantlongwdtablebehavior=1constantlongwdautoFitFixed=0constantlongwdcell=12stringstr_value//得到数据窗口数据的列数和行数(行数应该是数据行数+1)col_colnum=long(ad_datawindow.object.datawindow.col umn.count)col_rownum=ad_datawindow.rowcount()+1 //先在word文档中画好表格setpointer(hourglass!)oleobjectword.documents.addoleobjectword.activedocument.tables.add(oleobjectwo rd.selection.Range,#+string(i)+".name")+"_t"str_val ue=ad_datawindow.describe(ls_colname+".text") oleobjectword.selection.typetext(str_value)oleobjectword.selection.moveRight(wdcell)nextad_datawindow.setRedraw(false)oleobjectword.selection.moveleft(wdcell)setpointer(hourglass!)fori=2tocol_rownumforj=1tocol_colnumad_datawindow.scrolltorow(i-1)ad_datawindow.setcolumn(j)str_value=ad_datawindow.getitemstring(i-1,j)ifisnull(str_value)thenstr_value=endifoleobjectword.selection.moveRight(wdcell)oleobjectword.selection.typetext(str_value)nextnextad_datawindow.setredraw(true)constantlongwdFormatdocument=0//保存新建的文档oleobjectword.activedocument.saveas(ls_filepath,0,f alse,"",true,"",false,false,false,false,false) booleanlb_existlb_exist=Fileexists(ls_filepath)iflb_existthenmessagebox("提示","数据已经保存到"+ls_filepath) endif//断开ole连接oleobjectword.disconnectobject()destroyoleobjectwordendsubroutine//dwsave2xls调用oleglobaltypegf_dwsavetoexcelfromfunction_objectendtypeforwardprototypesglobalfunctionintegergf_dwsavetoexcel(datawindowadw) endprototypesglobalfunctionintegergf_dwsavetoexcel(datawindowadw );stringxlsname,namedintegervaluestringcol_del,first_delvalue=getFilesavename("另存",xlsname,named,"xls","xlsFiles(*.xls),*.xls")ifval ue=1thenadw.saveas(xlsname,excel!,tRue)elsereturn2endifconstantintegerpplayoutblank=12oleobjectole_objectole_object=cReateoleobjectintegerli_retli_ret=ole_object.connecttoobject("","excel.applica tion")iFli_ret0thenli_ret=ole_object.connecttonewobject("excel.applica tion")iFli_ret0thenmessagebox("ole错误","ole无法连接!~r~n错号:"+string(li_ret))Return0endiFole_object.visible=FalseendiFpointeroldpointeroldpointer=setpointer(hourglass!)ole_object.workbooks.open(xlsname)ole_object.worksheets[1].activatelongcolumncount,rowscountcolumncount=long(adw.object.datawindow.column.count )rowscount=adw.rowcount()+1stringls_colname[],ls_valueintegeri,jlonghandle为误handle=openchannel("excel",xlsname)//将列名转化为中文名称,即标题头名称forj=1tocolumncountls_colname[j]=adw.describe("#"+string(j)+".name")ls_value=adw.describe(ls_colname[j]+"_t"+".text")//ole_object.activesheet.cells[1,j].value=ls_value 开始的方法setRemote("R1c"+stRing(j),ls_value,handle)nextdatawindowchildldw_childlongll_foundForj=1tocolumncount//col_del标识将要删除不可见的列ifadw.describe("#"+string(j)+".visible")="0"then iFinteger(j) //当列小于26时,excel中用a-z表示列号first_del=char(integer(j)+64)else//大于26,小于等于52列时,aa-az,大于52列时可能性不大未做考虑first_del="a"+char(integer(j)+38) endifcol_del=col_del+first_del+":"+first_del+","continueendif//当列可见且为下拉数据窗口时,数据值转化为显示值ifadw.describe("#"+string(j)+".edit.style")=dddwthe nadw.getchild(ls_colname[j],ldw_child)fori=1torowscount-1//"dm","dmyy"是我通常用下拉数据子窗口的值以及显示值//更通用的方法是用dddw.datacolumn,dddw.displaycolumn得到ll_found=ldw_child.Find("dm"+"="+adw.getitemstring( i,j)+"",1,ldw_child.Rowcount())ifll_found>0thensetRemote("R"+stRing(i+1)+"c"+stRing(j),ldw_child.g etitemstring(ll_found,"dmyy"),handle)endif//另外一种方法,数据量大时比现用方法速度慢//setRemote("R"+stRing(i+1)+"c"+stRing(j),adw.descr ibe("evaluate(lookupdisplay(#"+string(j)+"),"+string(i)+")"),handle)nextendifnextclosechannel(handle)ifcol_delthencol_del=leFt(col_del,len(col_del)-2)//删除不可见列ole_object.activesheet.range(col_del).delete endifsetpointer(oldpointer)ole_object.activeworkbook.save()ole_object.application.quit()ole_object.disconnectobject()destroyole_objectReturn1endfunctionstringls_assize,namedintli_value,li_rt,li_rc,li_rt1//li_value=gf_dwsavetoexcel(dw_detail)//ifdw_detail.rowcount()setpointer(hourglass!)li_value=getfilesavename("saveFile",ls_assize,named ,"excel","excelfiles(*.xls),*.xls,"+stringls_filepa thls_filepath=gf_getfilesavename()oleobjectoleobjectwordoleobjectword=createoleobject//连接wordifoleobjectword.connecttonewobject("word.applicatio n")0thenmessagebox("提示","ole连接错误!")returnendifoleobjectword.visible=false//word文档在操作数据过程中是否可见longcol_colnum,col_rownumconstantlongwdtablebehavior=1constantlongwdautoFitFixed=0constantlongwdcell=12stringstr_value//得到数据窗口数据的列数和行数(行数应该是数据行数+1)col_colnum=long(ad_datawindow.object.datawindow.column.count)col_rownum=ad_datawindow.rowcount()+1//先在word文档中画好表格setpointer(hourglass!)oleobjectword.documents.addoleobjectword.activedocument.tables.add(oleobjectword.selection.Range,#+string(i)+".name")+"_t"strvalue=ad_datawindow.describe(ls_colname+".text") oleobjectword.selection.typetext(str_value)oleobjectword.selection.moveRight(wdcell)nextad_datawindow.setRedraw(false)oleobjectword.selection.moveleft(wdcell)setpointer(hourglass!)fori=2tocol_rownumforj=1tocol_colnumad_datawindow.scrolltorow(i-1)ad_datawindow.setcolumn(j)1121。

相关文档
最新文档