Excel对象模型(精选2篇)
Excel对象模型 第1篇
在很多情况下, 软件开发人员设计数据库应用系统时, 免不了要求系统自动且快速生成大量相关报表, 通常采用的技术是使用AutoCad软件, 将多个表格批量生成到一个CAD图形文件中 (即.DWG文件) , 再通过打印机输出。其技术优点在于能够批量生成大量报表, 但对于少量报表输出的情形, 缺乏灵活方便性, 而且操作步骤比较繁琐, 因此需要寻求一种更加适合少量报表生成并输出情况的可行方法。
2. 实现思路
Microsoft Office中的Excel报表生成组件就是专门为处理各类报表的专用工具, 使用起来非常灵活方便, 并且具有数据运算、汇总和报表格式设计等丰富的功能, 因此, 若能在高级编程语言中把Excel当作对象来调用其现成的功能, 利用Excel中已经调试好的代码来进行运算, 那么就省去了其他程序员编写和调试复杂代码的麻烦过程, 因此可以把Excel视为对象服务器, 在PowerBuilder应用程序中通过调用其各中方法来进行表格的生成、计算和打印等功能。则可实现编程工具中操作复杂Excel报表文件的目的。
3. 在PowerBuilder编程语言中生成Excel报表
PowerBuider是Sybase公司提供的一种数据库应用系统的前端快速开发工具, 使用其数据窗口对象可以很快捷轻松的访问数据库中各种数据。同时, PowerBuilder开发工具还支持与多种数据库进行访问连接, 如目前流行的Oracle、Informian、Microsoft SQL Server等企业级数据库都可建立连接, 处理各种有关报表管理事务。下面具体说明如何在PowerBuilder开发语言环境中实现Excel报表生成的主要步骤。
(1) 声明OLE对象, 例如:OLEOBJECT OLE_Report_Excel;
(2) 创建O L E对象, 例如:O L E_R e p o r t_E x c e l=C r e a t e OLEOBJECT;
(3) 使用PowerBuilder中的Connect To NewOBJECT () 函数来创建一个新的OLE对象, 并且连接此对象, 例如:OLE_Report_Excel.Connect To NewObject (‘EXCEL.Application’) 。如果该函数的调用返回值为-0, 说明连接成功, 否则就表示调用失败。
经上述三步即可完成操作报表前的准备工作, 下面简要介绍后续操作实现过程。
4. 生成报表要素
PowerBuilder打开Excel文件时, 可以将其设置成后台打开模式进行操作, 即通过配置其Visible属性的逻辑值 (True或False) 来实现, 示例语句如下:
OLE_Report_Excel.Visible=False
OLE_Report_Excel.Application.Workbooks.Open ("D:ReportExample.XLS")
然后对该表格的数据列表中的单元格访问时, 必须要通过Application对象的属性对象ActiveCell进行操作, 例如对选定单元格赋值时, 其操作可分为步骤来实现:
(1) 选中数据单元格:调用Range对象的Select () 方法, Range对象的作用可以选择一个或多个目标数据单元, 需要配置起始行数、列数和截至行数、列数, 若选择一个单元格, 只需配置起始参数。示例代码如下:
OLE_Report_Excel.Range ("C1") .Select ()
(2) 给选中数据单元赋值:选中之后, 对ActiveCell对象的Formula (R1C1) 属性赋值即可完成。示例代码如下:
OLE_Report_Excel.ActiveCell.FormulaR1C1=sle_2.Text//Sle_2为静态文本框控件, 将其数值付给
(3) 调用SUM () 方法可以实现对选定数据单元格的求和运算, 也即先调用SELECT () 方法制定求和单元格的范围, 指定结果单元格的位置, 将求和结果赋值, 示例代码如下:
(4) 对单元格其他属性其的设置, 例如要求把某单元格字体设置为粗体, 先选中后设置, 示例代码如下:
(5) 报表打印时, 首先必须指定打印的内容, 再调用Application对象的PrintOut () , 例如, 打印输出WorkSheet的Sheet1内容时, 示例代码如下:
(6) 结束时关闭Excel文件, 同时释放内存资源, 同时向操作者发出弹出提示, 可以通过对Application对象的DisplayAlerts属性值进行相应的配置, 即可完成。此时参数的设置有2个选择, 值为TRUE时表示关闭Excel时提出是否保存选择对话;值为FALSE时不弹出对话提示, 直接自动保存。
(7) 全部工作完成以后, 需要关闭OLE对象, 同时断开与Excel服务的连接。程序示例代码如下:
(8) 其余属性的设置可以查阅相关资料, 在此不另描述。
5. 程序代码组合示例
6. 结束语
采用文中介绍的方法, 在实际报表应用开发中, 通过与数据库的连接和调用Excel对象的方法, 在高级编程语言中灵活方便地实现对复杂报表的生成、报表数据运算的方面功能。
文中实例代码已在Wnidows XP、Power Buidler 8.0、Mcirosolft SQL Server 2000、Microsoft Office Excel 2000环境下调试并通过, 其运行结果符合设计要求, 且能够达到预期目的。可以使用这种方法快捷方便地制作复杂的Excel报表, 能够极大地提高程序开发和维护的效率。
参考文献
[1]肖刚王, 洪恩, 王昌建等.基于Word文档的数据交换策略及其实现[J].计算机应用与软件, 2004, (3) .
[2]龙腾, 杨俊, 张勤, 等PowerBuilder8.0实例[M].长沙:国防科技大学出版社, 2002.
[3]张振坤, 李文立, 焦虹, 等.PowerBuidler精彩编程200例[M].北京:机械工业出版社, 2004
Excel对象模型 第2篇
【关键词】 商誉; 减值测试; 减值测试模型
购买方对合并成本大于合并中取得的被购买方可辨认净资产公允价值份额的差额确认为商誉。企业会计准则规定,企业合并所形成的商誉,至少应当在每年年末结合与其相关的资产组或资产组组合进行减值测试。根据资产组或资产组组合的可收回金额(公允价值减去处置费用后的净额与预计未来现金流量现值的较高者)与其账面金额孰低来判断是否发生减值。
一、商誉减值测试的步骤
企业进行资产减值测试时,对于因企业合并形成商誉的账面价值,应当自购买日起按照合理的方法分摊至相关的资产组;难以分摊至相关资产组的,应当将其分摊至相关的资产组组合。
与商誉相关的资产组或者资产组组合存在减值迹象时,应先对不包含商誉的资产组或者资产组组合进行减值测试,计算可收回金额并与相关账面价值比较,确定相应减值损失。
再比较包括分摊商誉账面价值在内的资产组或者资产组组合的账面价值与其可收回金额。如相关资产组或者资产组组合的可收回金额低于其账面价值的,应当确认商誉减值损失。但商誉的减值损失不应超过商誉总金额,超过部分作为资产组或者资产组组合的减值损失。
二、商誉减值测试模型设计及其分析
(一)商誉减值案例分析
为了阐述商誉减值测试过程,举例说明:
例1:南方公司系生产电子仪器的上市公司,该电子仪器主要销往欧美等国,由于受国际金融危机的不利影响,电子仪器市场销量一路下滑。南方公司在编制2010年度财务报告时,对商誉进行减值测试。相关资料如下:
1.2009年12月31日,南方公司以银行存款4 200万元从二级市场购入北方公司80%的有表决权股份,能够控制北方公司。当日,北方公司可辨认净资产的公允价值和账面价值均为4 000万元。
2.2010年12月31日,南方公司在合并财务报表层面确定的北方公司可辨认净资产的账面价值为5 400万元,北方公司可收回金额为5 100万元。
3.北方公司拥有甲、乙、丙三条生产线,并且都能独立形成现金流。2010年末,甲、乙、丙三条生产线的账面价值分别为2 300万元、1 700万元和1 400万元,甲生产线的公允价值减去处置费用后的净额为2 200万元,乙、丙生产线无法合理估计其公允价值减去处置费用后的净额以及未来现金流量的现值。
南方公司根据上述资料,对商誉进行减值测试,对商誉进行减值测试时,将北方公司总体认定为一个资产组组合。
第一步:对不包含商誉的资产组进行减值测试
北方公司可辨认净资产的账面价值为5 400万元,大于北方公司可收回金额5 100万元,发生减值损失300万元。
第二步:计算购买日商誉(不包括少数股东)
4 200-(4 000×80%)=1 000(万元),即报表层面确认的商誉为1 000万元。
第三步:倒推出整体商誉(包括少数股东)
1 000÷80%=1 250万元
第四步:对包含整体商誉的资产组组合进行减值测试
资产组组合账面价值(包括整体商誉)=5 400+1 250=
6 650万元,可收回金额为5 100万元,发生减值损失1 550
(6 650-5 100)万元。
第五步:资产组减值损失的分摊
首先冲减分摊至资产组组合中整体商誉的账面价值。即冲减整体商誉减值损失1 250万元,剩余的300(1 550-
1 250)万元,由北方公司可辩认净资产的甲、乙、丙资产组来分摊。
(二)建立减值测试模型
在Excel下建立商誉减值测试模型(图1)。
(三)商誉减值测试模型设计
输入区:在B4:E8为数据输入区,其中B7:E8如果没有数据的输入“-”;输出区:在B9:F19为数据输出区。
计算可收回金额:B9=IF(AND(B7=“-”,B8=“-”),“-”,MAX(B7,B8)),并复制到C9,D9,F9单元格;
计算资产组减值损失:B10=IF(B9=“-”,“-”,IF(B6 计算资产组间分摊减值损失比例:B11=ROUND(B4/SUM($B$4:$D$4),2),并复制到C11,D11=1-B11 -C11; 计算资产组实际减值损失:B12=ROUND(IF(B10=“-”,$F$11*B11,MIN(B10,$F$11*B11)),1),并复制到C12,D12单元格。 分摊后账面价值:B13=B4-B12 第二次分摊减值损失比例:B15=ROUND(IF($F$14=0,0,IF(OR(B10=“-”,B10>B12),B13/$F$13,0)),2),并复制到C15,D15= 1-B15-C15 第二次分摊减值损失:B16= ROUND(IF(B9=“-”,B15*$F$14,MIN(B10-B12,B15*$F$14)),1),并复制到C16,D16= F14-B16-C16 两次分摊减值损失总额:B18=IF($F$17=0,B12+B16,IF(B10=“-”,B12+B16+$F$17,B12+B16+MIN(B10-(B12+B16),$F$17))),并复制到C18,D18单元格。 资产组两次分摊后账面价值:B19=B4-B18 分摊商誉数额:E12=IF(F10>E6,E6,F10),E18=E12+E16,F4=SUM(B4:E4) 资产组组合减值总额:F10=IF(F9=“-”,“-”,F6-F9); 扣除商誉减值外的减值总额:F11=F10-E12,F12=B12 +C12+D12+E12 参与二次分配资产组账面余额之和: F13=IF(OR(B10=“-”,B10>B12),B13,0)+IF(OR(C10=“-”,C10>C12),C13,0)+IF(OR(D10=“-”,D10> D12),D13,0) 未分配完的减值损失总额:F14=F10-F12,F16=B16 +C16+D16,F17=F14-F16 两次分摊减值损失总和: F18=IF($F$17=0,F12+F16,IF(F10=“-”,F12+F16+$F$17,F12+F16+MIN(F10-(F12+F16),$F$17))) 两次分摊后账面价值:F19=F6-F18 (四)商誉减值的会计处理 在资产组组合1 550万元的减值损失中,1 250万元应当归属商誉减值损失,但合并报表中确认的商誉仅限于南方公司持有北方公司80%股权部分,子公司少数股东的商誉减值损失不需要在合并报表上反映,即确认1 000万元的商誉减值损失,剩下的减值损失应当冲减北方公司可辨认净资产账面价值。分录如下: 借:资产减值损失——商誉 1 000 ——固定资产等 300 贷:商誉减值准备 1 000 固定资产等减值准备——甲生产线 100 ——乙生产线 109 ——丙生产线 91 【参考文献】 [1] 财政部.企业会计准则[S].北京:经济科学出版社,2006. [2] 财政部会计资格评价中心.中级会计实务[M].北京:中国财政经济出版社,2010. 【Excel对象模型】相关文章: ADO对象模型08-04 基于面向对象的GIS空间数据特征模型研究09-11 基于EXCEL的企业应收账款分析模型设计09-12 刑法中的行为对象与犯罪对象的若干研究09-11 对象构建05-22 实践对象05-22 工程对象05-31 对象关系06-30 发展对象07-03 比较对象07-10