PB中操作excel

       在powerbuilder 中控制excel制表

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

另加:

     1、单元格合并

       xlapp.ActiveSheet.range("A2:E2").merge        //将A2:E2的单元格合并为一个单元格

     2、设置单元格属性

     文本:xlapp.ActiveSheet.range("A4:H"+String(numrows)).NumberFormat = '@'  //区域内单位格文本设置

                xlapp.ActiveSheet.cells(4,3).NumberFormat = '@'  //4行3列的单位格设置为文本

     时间:  xlapp.ActiveSheet.cells(4,3).NumberFormat ='yyyy-mm-dd'

-----------------------------------------

  eg:将freedom型数据窗口数据导出到excel中

//==============================================================================
// 事件: cb_export::clicked()
//------------------------------------------------------------------------------
// 描述: 保存数据窗口数据到excel
//------------------------------------------------------------------------------
// 参数: (无)
//------------------------------------------------------------------------------
// 返回值: (无)
//------------------------------------------------------------------------------
// 作者: lnn 日期: 2008.03.18
//------------------------------------------------------------------------------
// 修改历史:
// 
//==============================================================================

Long numcols,numrows ,c,r,ll_progress
OLEObject   xlapp , xlsub
Int   ret   , li_rc
String  v_aac001,v_aac003,v_aac002,v_aac004,v_aac008,v_aac006
String ls_SaveFileName,ls_SavePath

ls_SavePath = "D:/单位人员明细表"
IF NOT DirectoryExists(ls_SavePath) THEN
 CreateDirectory (ls_SavePath)
END IF
numcols   =   Long(dw_ry.Object.DataWindow.Column.Count ) - 2 //总列数
numrows   =   dw_ry.RowCount()   //总行数

xlapp   =   CREATE   OLEObject

ret   =   xlapp.ConnectToNewObject(   "Excel.application"   )
IF   ret < 0  THEN
 MessageBox("Connect to Excel Failed!",String(ret))
 RETURN
END IF

xlapp.Application.Workbooks.add

xlapp.Application.Visible   =   FALSE

xlsub   =   xlapp.Application.ActiveWorkbook.Worksheets[1]


//---------标题头操作
//合并单元格
xlapp.ActiveSheet.range("A1:H1").merge
//设置字体
xlapp.ActiveSheet.Cells(1,1).Font.Name = "黑体"
//设置字体大小
xlapp.ActiveSheet.Cells(1,1).Font.Size = 16
//设置整列字体为粗体
xlapp.ActiveSheet.Cells(1,1).Font.Bold = TRUE
//居中
xlapp.ActiveSheet.Cells(1,1).HorizontalAlignment   =   3
//单元格赋值
xlapp.ActiveSheet.Cells(1,1).Value = "参保单位人员明细表"


//单位编号
xlapp.ActiveSheet.rows(2).Font.Bold = TRUE
xlapp.ActiveSheet.range("A2:E2").merge
xlapp.ActiveSheet.Cells(2,1).Font.Size = 10
xlapp.ActiveSheet.Cells(2,1).Font.Name = "黑体"
xlapp.ActiveSheet.Cells(2,1).HorizontalAlignment  = 1
xlapp.ActiveSheet.Cells(2,1).Value = "单位名称: " + Trim(dw_ry.Object.aab004[1])

//
xlapp.ActiveSheet.range("F2:H2").merge
xlapp.ActiveSheet.Cells(2,6).Font.Size = 10
xlapp.ActiveSheet.Cells(2,6).Font.Name = "黑体"
xlapp.ActiveSheet.Cells(2,6).HorizontalAlignment = 1
xlapp.ActiveSheet.Cells(2,6).Value = "单位编号: "+ Trim(dw_ry.Object.aab001[1])

//列名赋值
xlapp.ActiveSheet.range("A3:H3").HorizontalAlignment = 3
xlapp.ActiveSheet.range("A3:H3").Font.Size = 10
xlapp.ActiveSheet.range("A3:H3").Font.Name = "宋体"

xlapp.ActiveSheet.Cells(3,1).ColumnWidth = 4
xlapp.ActiveSheet.Cells(3,1).Value = "序号"

xlapp.ActiveSheet.Cells(3,2).ColumnWidth = 9
xlapp.ActiveSheet.Cells(3,2).Value = "个人编号"

xlapp.ActiveSheet.Cells(3,3).ColumnWidth = 8
xlapp.ActiveSheet.Cells(3,3).Value = "个人姓名"

xlapp.ActiveSheet.Cells(3,4).ColumnWidth = 20
xlapp.ActiveSheet.Cells(3,4).Value = "身份证号"

xlapp.ActiveSheet.Cells(3,5).ColumnWidth = 4
xlapp.ActiveSheet.Cells(3,5).Value = "性别"

xlapp.ActiveSheet.Cells(3,6).ColumnWidth = 11
xlapp.ActiveSheet.Cells(3,6).Value = "出生日期"

xlapp.ActiveSheet.Cells(3,7).ColumnWidth = 7
xlapp.ActiveSheet.Cells(3,7).Value = "人员状态"

xlapp.ActiveSheet.Cells(3,8).ColumnWidth = 15
xlapp.ActiveSheet.Cells(3,8).Value = "是否参加失业保险"
//messagebox("",numrows)


xlapp.ActiveSheet.range("A4:H"+String(numrows+4)).NumberFormat = '@'
xlapp.ActiveSheet.range("A4:C"+String(numrows+4)).HorizontalAlignment = 3
xlapp.ActiveSheet.range("D4:D"+String(numrows+4)).HorizontalAlignment = 1
xlapp.ActiveSheet.range("E4:H"+String(numrows+4)).HorizontalAlignment = 3
xlapp.ActiveSheet.range("A4:H"+String(numrows+4)).Font.Size = 10

 

FOR c = 1 TO numrows
 
 r = c + 3
 v_aac001 = Trim(dw_ry.Object.aac001[c])
 v_aac003 = Trim(dw_ry.Object.aac003[c])
 v_aac002 = Trim(dw_ry.Object.aac002[c])
 
 CHOOSE CASE Trim(dw_ry.Object.aac004[c])
  CASE "1"
   v_aac004 = '男'
  CASE "2"
   v_aac004 = '女'
  CASE ELSE
   v_aac004 = ''
 END CHOOSE
 
 
 v_aac006 = Trim(String(dw_ry.Object.aac006[c],'yyyy-mm-dd'))
 CHOOSE CASE Trim(dw_ry.Object.aac008[c])
  CASE '11'
   v_aac008 = '在职'
  CASE '21'
   v_aac008 = '离退'
  CASE '31'
   v_aac008 = '离休'
  CASE ELSE
   v_aac008 = ' '
 END CHOOSE
 xlapp.ActiveSheet.Cells(r,1).Value = String(c)
 xlapp.ActiveSheet.Cells(r,2).Value = v_aac001
 xlapp.ActiveSheet.Cells(r,3).Value = v_aac003
 xlapp.ActiveSheet.Cells(r,4).Value = v_aac002
 xlapp.ActiveSheet.Cells(r,5).Value = v_aac004
 xlapp.ActiveSheet.Cells(r,6).Value = v_aac006
 xlapp.ActiveSheet.Cells(r,7).Value = v_aac008
 xlapp.ActiveSheet.Cells(r,8).Value = " "
 ll_progress = Integer(Round(c*100/numrows,0))
 hpb_progress.Position = ll_progress
 st_progress.Text = String(ll_progress)+'%'
NEXT

//统计信息
long ll_tj
ll_tj = numrows + 4
xlapp.ActiveSheet.range("A"+String(ll_tj)+":E"+String(ll_tj)).merge
xlapp.ActiveSheet.Cells(ll_tj,1).Value = "总人数:"+Trim(dw_ry.Object.com_zrs[1])+ &
+"    在职人数:"+Trim(dw_ry.Object.com_zz[1]) &
+"    离退人数:"+Trim(dw_ry.Object.com_lt[1]) &
+"    离休人数:"+Trim(dw_ry.Object.com_lx[1])

xlapp.ActiveSheet.Cells(ll_tj,7).Value = "制表时间:"
xlapp.ActiveSheet.Cells(ll_tj,8).Value = Trim(dw_ry.Object.com_date[1])

//画表格线
String   ls_range
ls_range   =   "A3:H"   +   Trim(String(numrows+3))

xlapp.Application.range(ls_range).borders(1).LineStyle   =   1
xlapp.Application.range(ls_range).borders(2).LineStyle   =   1
xlapp.Application.range(ls_range).borders(3).LineStyle   =   1
xlapp.Application.range(ls_range).borders(4).LineStyle   =   1

//保存文件
ls_SaveFileName = ls_SavePath+"/" +Trim(dw_ry.Object.aab004[1]) +".xls"


xlapp.Application.ActiveWorkbook.saved   =   FALSE

IF FileExists(ls_SaveFileName) THEN
 FileDelete(ls_SaveFileName)
END IF

xlapp.ActiveWorkbook.SaveAs(ls_SaveFileName)

//关闭
xlapp.quit
xlapp.DisconnectObject()
DESTROY   xlapp

MessageBox("提示","单位:"+Trim(dw_ry.Object.aab004[1]) &
 +"~n~n人员清单成功导入EXCEL!~n~n文件保存路径:~"" &
 + ls_SaveFileName+"~"")

导出结果:下图


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值