pb 调用old常用函数及实例


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

****************

 

1.申明和定义(其他变量定义省略)
 OLEObject  xlapp   // EXCEL application object
 OLEObject xlwk   // EXCEL workbook object
 OLEObject xlsub   // EXCEL worksheet object
 OLEObject xlcel   // EXCEL cell object

2.连接Excel文件,ls_path为Excel路径
 xlapp = create OLEObject
 
 li_ret = xlapp.ConnectToObject(ls_path)

 if li_ret < 0  then
  MessageBox("ERR","")
  destroy xlapp
 end if

3.打开Excel的workbook
 ll_cnt = xlapp.Application.Workbooks.Count //获取当前workbook的个数
 xlwk = xlapp.Application.Workbooks[ll_cnt] //打开最新的一个对象,也就是上面连接后打开的excel对象(如果改文件已经打开,需特殊考虑)
 xlsub = xlwk.Worksheets[1]
 xlapp.Application.Windows(ll_cnt).Visible = true //设置对象不可视
 
 xlsub.Activate
 
4.操作Excel的sheet
 //设置单元格背景颜色
 xlsub.cells(1,1).Interior.Color = rgb(255,0,0)
 xlsub.cells(1,1).Interior.Pattern = "1"
 
 //设置列的filter
 xlsub.Rows("1:1").AutoFilter
 
 //获取Excel行数
 ll_rowcnt_xls = xlsub.UsedRange.Rows.Count
 
 //设置Excel列宽自动大小(随内容宽度自动变化)
 xlsub.Rows("1:" + string(ll_rowcnt_xls)).Columns.AutoFit
 
 //sheet锁定, false:解锁; true:加锁
 xlsub.Cells.Locked = False
 
 //做一个下拉列表框,当选择DEL时候背景变成红色,选择NoAction无变化
 xlsub.Range(ls_range).Validation.Delete
 xlsub.Range(ls_range).Validation.Add("3", "1", "1", "NoAction,DEL")
 xlsub.Range(ls_range).Validation.IgnoreBlank = True
 xlsub.Range(ls_range).Validation.InCellDropdown = True
 xlsub.Range(ls_range).Validation.InputTitle = ""
 xlsub.Range(ls_range).Validation.ErrorTitle = ""
 xlsub.Range(ls_range).Validation.InputMessage = ""
 xlsub.Range(ls_range).Validation.ErrorMessage = ""
 xlsub.Range(ls_range).Validation.IMEMode(0)
 xlsub.Range(ls_range).Validation.ShowInput = True
 xlsub.Range(ls_range).Validation.ShowError = True
 
 xlsub.Range(ls_range).FormatConditions.Delete
 xlsub.Range(ls_range).FormatConditions.Add("1", "3", "DEL")
 xlsub.Range(ls_range).FormatConditions(1).Font.Color = rgb(255,0,0)
 
 //设置sheet单元格格式为文本格式
 xlsub.Cells.NumberFormatLocal = "@"
 
 // 设置保护,第一个参数是密码,后面的参数比较复杂,可以自己去一个一个实验
 xlsub.protect("password",true, true,true, false,false, false,false,true,true, false,true,true,false,true,false)
 
 //将sheet1的一列复制到sheet2中
 xlwk.Sheets("sheet1").Select()
 xlwk.Sheets("sheet1").Columns(ll_col_xls).Copy() // 要复制的列
 xlwk.Sheets("sheet2").Select()
 xlwk.Sheets("sheet2").Columns(ll_col_newsheet).Select() // 粘贴到ll_col_newsheet列前
 xlwk.Sheets("sheet2").Paste()
 
5.关闭Excel
 xlapp.Application.DisplayAlerts   =   False // 不提示保存等提示信息,且为不保存
 xlwk.save()
 xlwk.Close()
 
 xlapp.ConnectToObject(ls_path) //从新打开一个Excel对象
 ll_cnt = xlapp.Application.Workbooks.Count
 xlwk = xlapp.Application.Workbooks[ll_cnt]
 xlapp.Application.DisplayAlerts   =   True
 
 // -------------------------------------------
 // 上面关闭提示了,这里要解开关闭,否则其他woekbook关闭也没提示,
 //但是直接设置为true是不可以的(见下面两行代码),必须再打开一个对象,再设置为true才可以
 //xlapp.Application.DisplayAlerts   =   False
 //xlapp.Application.DisplayAlerts   =   True
 //--------------------------------------------
 
 xlwk.close()
 xlapp.DisConnectObject()
 
 Destroy xlsub
 Destroy xlwk
 Destroy xlapp
 
 ******************

 

oleobject  xlapp,xlsub 
xlapp = CREATE OLEObject
integer li_ret
string ls_name,cldm1,clmc1,ggcs1,dw1,xh
double qgj1,bsj1,bdj1,ysj1
integer i,j
string docname, named
integer value
value = GetFileOpenName("选择文件",docname,named, "xls","EXCEL文件(*.XLS),*.XLS,")
IF value=1 THEN
   li_ret = xlapp.ConnectToNewObject("Excel.Application")
   if li_ret <> 0 then
      MessageBox("错误!","无法启动excel程序!")
      return 0
   end if
else
MessageBox("错误!","无法打开文件!")
   return
end if
openwithparm(w_message,"正在导入...")
xlapp.application.workbooks.open(docname) 
xlsub=xlapp.application.activeworkbook.worksheets[5]
delete from clsx;
commit;
for i=2 to 1785
    cldm1=trim(xlsub.cells[i,1].value)
 clmc1=trim(xlsub.cells[i,2].value)
 ggcs1=trim(xlsub.cells[i,3].value)
 dw1=trim(xlsub.cells[i,4].value)
 qgj1=double(xlsub.cells[i,5].value)
 bsj1=double(xlsub.cells[i,6].value)
 bdj1=double(xlsub.cells[i,7].value)
 ysj1=double(xlsub.cells[i,8].value)
 xh=string(i - 1)
    insert into clsx values(:xh,:cldm1,:clmc1,:ggcs1,:dw1,0,0,:qgj1,:bsj1,:bdj1,:ysj1,0,' ',' ');
    commit using sqlca;
 w_message.st_1.text="已经完成:"+string(i - 1)+"/"+string(1785)
end for
xlapp.application.workbooks.close("g:\bzclk.xls") 
DESTROY xlapp;
w_message.st_1.text="正在提取数据!请稍候..."
dw_1.settransobject(sqlca)
dw_1.retrieve()
close(w_message)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值