热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

对于较为中国化的报表,虽然后dw这个坚强后盾,但是也难不住繁复疲劳的应对。不过我们可以知道,数据的输出,都是居于table的栏位或者计算字段。只是很多统计的模式和展现模式不同。我在一年前作完一个系统,
对于较为中国化的报表,虽然后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).Column 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()


推荐阅读
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
author-avatar
哎哟不错哦凉皮
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有