`
buliedian
  • 浏览: 1234710 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

PB调用EXCEL的操作不失为一种好的报表输出方式

阅读更多
对于较为中国化的报表,虽然后dw这个坚强后盾,但是也难不住繁复疲劳的应对。
不过我们可以知道,数据的输出,都是居于table的栏位或者计算字段。只是很多统计的模式和展现模式不同。
我在一年前作完一个系统,可是客户几乎隔三差五有新的东东要输出报表。终于我发现。让客户先在excel里弄好,然后再写程序来输出也是一个不错的方法。关键是,客户给的东西不必要再进自己的系统,所以数据不会发生什么问题。如果本身软件有任何问题,那能从excel里的写的结果很容易看得出来。虽然写excel表格要花很多时间,但是减少了输入导入和输出的一些麻烦。
转载excel操作大全:
powerbuilder操作excel命令大全(例子的有些地方不对!)
2006-12-04 16:43
1.创建Excel对象

  eole=CREATEOBJECT(′Excel.application′)

  2.添加新工作簿

  eole.Workbooks.add

  3.设置第3个工作表为激活工作表

  eole.Worksheets(″sheet3″).Activate

  4.打开指定工作簿

  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=5

  9.设置指定行的高度(单位:磅)

  eole.ActiveSheet.Rows(1).RowHeight=1/0.035

  (设定行高为1厘米,1磅=0.035厘米)

  10.在第18行之前插入分页符

  eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1

  11.在第4列之前删除分页符

  eole.ActiveSheet.Columns(4).PageBreak=0

  12.指定边框线宽度(Borders参数如下)

  ole.ActiveSheet.Range(″b3: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-窄行8 5 11 39-宽行14 11)

  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

42 合并

string worksheet,beginRowcol,EndRowCol

MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Select
MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol ":" EndRowCol).Merge

43 sheet改名
MyOLE.ActiveWorkBook.Sheets(olename).select
MyOLE.ActiveWorkBook.Sheets(olename).name=newname

MyOLE=Create OLEObject
ConnectErr=MyOLE.ConnectToNewObject ("excel.Application")
MyOLE.visible=false
//打开指定的XLS文件激活workbooks
MyOLE.application.workbooks.Open (FilePath)
//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
MyOLE.Application.DisplayAlerts = False

if isnull(MyOLE) then return -1 ;
if ConnectErr <0 then
choose case ConnectErr
case -1
messagebox('错误提示','无效的调用')
case -2
messagebox('错误提示','类名没发现')
case -3
messagebox('错误提示','对象不能创建')
case -4
messagebox('错误提示','文件不能连接')
case -5
messagebox('错误提示','不能连接现在的对象')
case -6
messagebox('错误提示','文件无效')
case -7
messagebox("错误提示","文件不存在或已经打开")
case -8
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 = xlApp.ConnectToNewObject( "Excel.Sheet" ) //打开自动化对象应为 "excel.application"

if ret < 0 then

MessageBox("Connect to Excel Failed !",string(ret))

return

//操作第一个excel文件

string ls_file3="C:\mytest.xls"
obook3=xlApp.Application.Workbooks.Open(ls_file3) //打开文件

xlsub4 = xlapp.Application.ActiveWorkbook.Worksheets[1] //激活第一页

//对单元格赋值

xlsub4.cells[c,3].Value = string(mydata.getitemdecimal(r,'rs'))
xlsub4.cells[c,5].Value = string(mydata.getitemdecimal(r,'yp'))
xlsub4.cells[c,6] = string(mydata.getitemdecimal(r,'jc'))
xlsub4.cells[c,7] = string(mydata.getitemdecimal(r,'hy'))
xlsub4.cells[c,8] = string(mydata.getitemdecimal(r,'zl'))

//合并一个excel文件

string ls_ran
ls_ran = "B6:M"+string(ld_1+1)
obook1 = xlApp.Application.Workbooks.Open(ls_file2)
xlsub1 = xlapp.Application.ActiveWorkbook.Worksheets[1]
xlsub1.Range(ls_ran).Copy() //把所选内容复制到内存中


xlApp.Application.Visible = false
xlsub2 = obook3.Worksheets.add()
xlsub2.name = "分类汇总"
xlsub2.Range(ls_ran).PasteSpecial() //把上一个文件内容粘过来
//加入分类汇总
obook3.Worksheets("分类汇总").Activate()

integer a[6]
a={8,9,10,11,12,13}
xlsub2.Range(ls_ran).Select()
xlApp.Application.Selection.Subtotal(3,-4157,a, True, False, True)
xlsub2.Rows(1).Insert()
xlsub2.cells[1,1] = left(gs_shuqi,4)+"年"+right(gs_shuqi,2)+"月份"
xlsub2.Cells[1,1].Font.Name="宋体"
xlsub2.Cells[1,1].Font.Size=22
xlsub2.Range("A1:M1").Select()
xlApp.Application.Selection.Merge()
xlApp.Application.Selection.HorizontalAlignment = 2

oBook1.save()
oBook3.Save()
oBook3.Saveas(is_docname)
oBook1.close()
oBook3.close()
xlApp.Application.quit()
xlApp.DisConnectObject()

分享到:
评论

相关推荐

    PB如何调用EXCEL宏脚本进行操作

    本文将详细介绍如何在PB 9.0环境下调用Excel 2003 SP3的宏脚本来进行后台操作。 首先,了解PowerBuilder中的对象模型。PB提供了一系列的ADO(ActiveX Data Objects)和COM(Component Object Model)接口,允许我们...

    PB调用excel

    标题 "PB调用excel" 涉及到的是在PowerBuilder(PB)环境中,如何通过编程方式与Excel文件进行交互。PowerBuilder是一款强大的客户端/服务器应用程序开发工具,而Excel是微软Office套件中的电子表格软件,广泛用于...

    PB全面控制Excel

    3. **Excel命令调用**:PB可以调用Excel的各种方法执行操作,如Workbook.Open、Worksheet.Cells赋值、Range.CopyFromRecordset等,实现对Excel的数据读写、格式设置、图表创建等功能。 4. **数据导入导出**:PB可以...

    PB调用excel和word

    在本场景中,"PB调用excel和word"指的是使用PowerBuilder来操作Microsoft Office的Excel和Word应用程序,实现数据交换、自动化处理等功能。下面将详细介绍如何在PowerBuilder中调用Excel和Word。 首先,我们需要...

    PB调用http、api,PB解析json.zip

    PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析...

    pb导出excel2007

    为了将数据窗口的内容导出为Excel,开发者需要编写一段代码,这段代码会调用DLL中的函数,传入数据窗口对象和导出参数。DLL内部实现了数据转换和文件写入的逻辑,从而生成Excel文件。 具体步骤可能包括以下部分: ...

    PB与Excel通讯

    OLE是一种允许不同应用程序间进行数据交换的技术,通过它,PB可以调用Excel的功能,如打开、读取、修改和保存Excel文件。具体步骤包括:创建OLE对象,连接到Excel应用程序,打开或创建Excel文件,读取或写入数据,...

    PB调用http api接口 PB解析json

    PB调用HTTP API接口是PowerBuilder(PB)应用程序与远程服务交互的一种常见方式,这使得PB应用能够利用Web服务或RESTful API获取和传递数据。在这个过程中,PB不仅需要发送HTTP请求,还需要处理响应,尤其是当响应...

    PB调用C++DLL

    在PB中调用这样的函数时,你需要创建一个PB的字符串变量,然后将其转换为C风格的字符串,再传递给DLL。注意字符串长度的处理,避免缓冲区溢出。 在提供的"PB调用C++DLL例子"压缩包中,可能包含了示例代码,包括PB的...

    PB 调用webservice 几种方式

    以"weather"为例,假设我们有一个提供天气预报的Web服务,我们可以使用上述任何一种方法来获取和显示当前或未来的天气信息。首先,我们需要找到这个Web服务的WSDL或者API文档,了解它的接口和参数。然后,根据所选的...

    PB调用JAVA WEBSERVICE实例

    在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让我们深入探讨这个主题。 首先,Java Web服务(WEBSERVICE)是基于SOAP(Simple Object Access Protocol)...

    Pb调用 c#编写的DLL

    C#是一种现代化、类型安全且面向对象的编程语言,它具有丰富的库和功能,而PowerBuilder则是一款广泛用于构建客户端/服务器(MIS)系统的快速应用开发(RAD)工具。虽然PB因其简单性和低成本而受到青睐,但其技术限制...

    PB调用C#写的dll文件

    标题中的“PB调用C#写的dll文件”指的是在PowerBuilder(PB)应用程序中使用C#编译的动态链接库(DLL)文件。这通常涉及到跨语言互操作性,允许不同编程语言之间的通信和功能共享。 C#是一种现代、面向对象的编程...

    pb9excel导入

    在PB9中实现Excel文件导入主要依赖于OLE (Object Linking and Embedding) 技术,这是一种用于应用程序间通信的技术,允许一个应用程序控制另一个应用程序的对象,或调用另一个应用程序的功能。在本案例中,PB9通过...

    pb调用qq截图dll

    另一种方法是使用PB的`External`对象或`DllImport`特性直接调用DLL。这允许你与DLL进行更复杂的交互,比如传递参数和接收返回值。例如,你可能需要定义一个函数来包装`CameraSubArea`,并在调用后处理返回的结果。 ...

    PB数据窗口保存为Excel文件

    标题中的“PB数据窗口保存为Excel文件”是指在PowerBuilder(PB)开发环境中,使用数据窗口(Data Window)组件将报表数据导出为Microsoft Excel格式的过程。数据窗口是PowerBuilder的核心功能之一,它允许开发者...

    PB中借助Excel实现对复杂报表的输出与打印

    ### PB中借助Excel实现对复杂报表的输出与打印 #### 引言 在现代企业管理信息系统(MIS)的开发过程中,报表制作是一项重要的任务。PowerBuilder作为一种流行的数据库前端开发工具,以其强大的数据窗口(DataWindow...

    PB导入excel转存txt

    根据给定的信息,本文将详细解释“PB导入excel转存txt”的知识点,包括PowerBuilder(PB)如何接收Excel数据并将其转换为TXT格式的过程、具体应用场景以及代码实现方式。 ### PB导入Excel数据并转存为TXT #### 一...

    新版excel导出控件.rar_donec1p_pb_pb excel_pb 导出_pb导出excel

    在这个场景中,"新版excel导出控件.rar_donec1p_pb_pb excel_pb 导出_pb导出excel" 的标题和描述提到了一个关键的开发需求:在PB应用中导出数据到Excel文件。 传统的PowerBuilder(PB)自身虽然提供了数据窗口...

    PB 调用.NET COM组件

    综上所述,PB调用.NET COM组件是跨平台开发中的一种常见技术,通过COM互操作,PB可以充分利用.NET Framework的强大功能,实现更丰富的应用功能。理解和掌握这一技术,对于提升PB应用的扩展性和功能多样性具有重要...

Global site tag (gtag.js) - Google Analytics