0
点赞
收藏
分享

微信扫一扫

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


对于较为中国化的报表,虽然后dw这个坚强后盾,但是也难不住繁复疲劳的应对。


不过我们可以知道,数据的输出,都是居于table的栏位或者计算字段。只是很多统计的模式和展现模式不同。


我在一年前作完一个系统,可是客户几乎隔三差五有新的东东要输出报表。终于我发现。让客户先在excel里弄好,然后再写程序来输出也是一个不错的方法。关键是,客户给的东西不必要再进自己的系统,所以数据不会发生什么问题。如果本身软件有任何问题,那能从excel里的写的结果很容易看得出来。虽然写excel表格要花很多时间,但是减少了输入导入和输出的一些麻烦。



powerbuilder操作excel命令大全(例子的有些地方不对!)


2006-12-04 16:43


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).Merge43 sheet改名
 MyOLE.ActiveWorkBook.Sheets(olename).select
 MyOLE.ActiveWorkBook.Sheets(olename).name=newnameMyOLE=Create OLEObject
 ConnectErr=MyOLE.ConnectToNewObject ("excel.Application")
 MyOLE.visible=false
 //打开指定的XLS文件激活workbooks
 MyOLE.application.workbooks.Open (FilePath)
 //对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
 MyOLE.Application.DisplayAlerts = Falseif 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



我的产品

反编译逆向工具:PB反编译大师 PowerBuilder反编译大师

加密工具:PB混淆加密大师 PowerBuilder混淆加密大师

互联网数据组件:DataWindowHTTP

ESC/POS打印组件:ESC/POS ImagePrint(LPT,column format)

以及正在测试即将释出的 SQLCloudODBC组件,等等等。

请关注和收藏我的博客或访问:PB反编译, PB反编译大师, PB加密, PB混淆加密大师,DatawindowHTTP,PB DeCompiler,PB Obfuscator

http://www.powerbuilder.ltd/indexcn.html




///         


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()


举报

相关推荐

0 条评论