PB中 把DW导出到Excel,与Excel通讯

本文介绍了一种将收费单内容导出至Excel 2003的方法,详细讲解了如何通过OLE对象实现数据导入,并展示了如何设置Excel样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//==============================================================================
// 事件: cb_export::clicked()
//------------------------------------------------------------------------------
// 描述: 把收费单的内容导入到excel中,Excel为2003
//------------------------------------------------------------------------------
// 返回值:  long
//------------------------------------------------------------------------------
// 作者:    Ran (Sunday_hl)       日期: 2006.04.12-13
//------------------------------------------------------------------------------
// 修改历史:
//    整理时间 2006.08.22
//==============================================================================

String docname,named
String current_dir
Integer Value
//================================================================================
//提示文件保存地点
current_dir = GetCurrentDirectory()
Value = GetFileSaveName("文件选择",docname,named,"xls","Excel文档 (*.xls), *.xls")
//恢复路径
ChangeDirectory(current_dir)
IF Value <> 1 THEN RETURN
IF FileExists(docname) THEN
    IF MessageBox("提示信息","“" + docname + "”文档已经存在,~r~n是/否覆盖此文档?",Information!,YesNoCancel!,1) <> 1 THEN
        RETURN
    END IF
END IF

//================================================================================
//使用ole向excel中倒入数据
OleObject uo_world,uo_sheel
uo_world = CREATE OleObject
uo_sheel = CREATE OleObject

IF uo_world.ConnectToNewObject("Excel.Application") <> 0 THEN        //把ole连接到excel
    MessageBox('连接到Excel错误','Excel无法连接!请确认是否已经安装了Excel!~r~n或者与管理员联系!',Exclamation!)
    DESTROY uo_sheel
    DESTROY uo_world       
    RETURN
END IF
//================================================================================
//连接上后,对Excel进行操作
TRY    //try例行例外 控制
    uo_world.DisplayAlerts = False            //强制执行,不用提示
    uo_world.workbooks.add()                    //创建一个新的工作薄
    uo_sheel = uo_world.ActiveSheet()        //得到当前工作表
   
    uo_sheel.Rows.Font.size = 10        //把默认的字体设为 10号
    uo_sheel.Rows.RowHeight = 15        //把默认的行高设为 15
   
    uo_sheel.Range("A1:I5").Merge()    //合并单元格
    uo_sheel.Range("A1:I5").Value = "镇江市XXXXXXXXXX检测收费明细"        //为单元格赋值
    uo_sheel.Range("A1:I5").Font.Bold = true        //字体显示为粗体
    uo_sheel.Range("A1:I5").Font.size = 18            //把区域字体定义为18号
    uo_sheel.Range("A1:I5").HorizontalAlignment = 3        //区域内的字体居中,1是默认 2是左对齐,3是居中,4是右对齐
   
    uo_sheel.Range("A6:G6").Merge()
    uo_sheel.Range("H6:I6").Merge()
    uo_sheel.Range("H6:I6").Value = today()
    uo_sheel.Range("H6:I6").HorizontalAlignment = 3
   
    uo_sheel.Range("A6:I6").Borders[4].LineStyle = 1        //为区域单元格画下画线 四个边 顺时针旋转,线类型1为实线2为虚线,其他不知道
   
//都差不多了,废话的 删除掉了
.....................................................
   
    uo_sheel.Range("A9:B9").Merge()
    uo_sheel.Range("A9:B9").Value = "软件流水号:"
    uo_sheel.Range("A9:B9").HorizontalAlignment = 4
    uo_sheel.Range("C9:I9").Merge()
    uo_sheel.Range("C9:I9").NumberFormat = "0"        //设置显示格式
    uo_sheel.Range("C9:I9").WrapText = True
    uo_sheel.Range("C9:I9").value = dw_1.Object.accept_no[dw_1.getrow()]
    uo_sheel.Range("C9:I9").HorizontalAlignment = 2
   
    uo_sheel.Range("A10:B10").Merge()
    uo_sheel.Range("A10:B10").Value = "备忘录:"
    uo_sheel.Range("A10:B10").HorizontalAlignment = 4
    uo_sheel.Range("C10:I10").Merge()
    uo_sheel.Range("C10:I10").HorizontalAlignment = 2
   
    uo_sheel.Range("A11:B11").Merge()
    uo_sheel.Range("A11:B11").Value = "收费依据:"
    uo_sheel.Range("A11:B11").HorizontalAlignment = 4
    uo_sheel.Range("C11:I11").Merge()
    uo_sheel.Range("C11:I11").Value = "收费依据:  <<XXXXX>> 苏价费(1996)~r~n417号,苏财综(96)153号。"
    uo_sheel.Range("C11:I11").HorizontalAlignment = 2
    uo_sheel.rows(11).RowHeight = uo_sheel.rows(11).RowHeight * 2        //调整当前行的高度为2倍普通高度
   
//都差不多了,废话的 删除掉了
.....................................................
   
    uo_sheel.Range("A12:I12").Borders[4].LineStyle = 1        //下画线
    //================================================================================
    //提取子数据窗口,把其内容添加到excel中
    DataWindowChild dwc_1    //子数据窗口
    Long ll_row                //子数据窗口的行
    String ls_range        //保存动态的 行数
    dw_1.Object.DataWindow.Processing = 5        //让数据窗口可以提取子数据窗口
    IF dw_1.getChild("dw_item",dwc_1) = 1 Then    //提取子数据窗口
       
        uo_sheel.Rows(13).Font.Bold = TRUE
        uo_sheel.Rows(13).RowHeight = 18
        uo_sheel.Range("A13:I150").HorizontalAlignment = 3        //让这个区域的单元格居中
        uo_sheel.Range("A13:C13").Merge()
        uo_sheel.Range("A13:C13").Value = "检测项目"
        uo_sheel.Range("D13:E13").Merge()
        uo_sheel.Range("D13:E13").Value = "单价"   
        uo_sheel.Range("F13:G13").Merge()
        uo_sheel.Range("F13:G13").Value = "样品份数"       
        uo_sheel.Range("H13:I13").Merge()
        uo_sheel.Range("H13:I13").Value = "小计"       
       
        FOR ll_row = 1 TO dwc_1.RowCount()        //循环提取子数据窗口中的行 并插入到excel中
            ls_range = "A" + String(13 + ll_row) + ":C" + String(13 + ll_row)
            uo_sheel.Range(ls_range).Merge()
            uo_sheel.Range(ls_range).Value = dwc_1.getitemstring(ll_row,"item_name")
           
          //都差不多了,废话的 删除掉了
              .....................................................     
        NEXT   
        uo_sheel.Rows(13 + ll_row).Font.Bold = TRUE
        uo_sheel.Rows(12 + ll_row).RowHeight = 18
       
         //都差不多了,废话的 删除掉了
         .....................................................
       
        ls_range = "F" + String(13 + ll_row) + ":G" + String(13 + ll_row)
        uo_sheel.Range(ls_range).Merge()
        uo_sheel.Range(ls_range).Value = "委托样应交金额:"
        uo_sheel.Range(ls_range).HorizontalAlignment = 4
       
        ls_range = "H" + String(13 + ll_row) + ":I" + String(13 + ll_row)
        uo_sheel.Range(ls_range).Merge()
        uo_sheel.Range(ls_range).Value = dwc_1.GetItemNumber(1,"compute_5")           
    Else
        MessageBox("Error","Get DataWindowChild Have A Big Error!",Exclamation!)
    END IF
    //================================================================================
    ls_range = "A" + String(13 + ll_row) + ":I" + String(13 + ll_row)
    uo_sheel.Range(ls_range).Borders[4].LineStyle = 1
    ls_range = "H" + String(13 + ll_row + 1) + ":I" + String(13 + ll_row + 1)
    uo_sheel.Range(ls_range).Merge()
    uo_sheel.Range(ls_range).Value = dw_1.GetItemString(1,"page_1")       
   
//    uo_world.visible = 1        //让excel显示
    uo_sheel.SaveAs(docname)
    MessageBox("提示信息","保存成功!")
//================================================================================
Catch(runtimeerror er)        //捕获 异常
    MessageBox("运行时出错", er.GetMessage(),Exclamation!)
Finally
    uo_world.quit()        //关闭excel
    DESTROY uo_sheel        //注销对象
    DESTROY uo_world        //注销对象
END TRY

//================================================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值