欢迎来到天天文库
浏览记录
ID:41128332
大小:38.01 KB
页数:5页
时间:2019-08-17
《用Excel快速实现测井柱状图的绘制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用Excel快速实现测井柱状图的绘制 李广超(工程物探院)[摘 要]利用COM编程中的自动化技术,蚩?SPANlang=EN-US>Excel文件,进行绘图,达到快速制作油气和工程物探测井柱状图的目的,使用该方法充分利用Excel的强大功能,方便用户。[关键词]〖HTSS〗ExcelCOM测井柱状剖面图 Excel是一个出色的电子表格软件,是迄今为止市场上功能最强的电子表格软件,从大型的企业公司到个人家庭都是应用最广泛的,有良好的用户基础,具有友好的界面,功能强大的数据计算能力和内部函数,还可以把数据以各种统计图的形式形象的表示出来,
2、进行数据分析。 Excel既是一个独立运行的程序,也是一个遵循COM(CommponentObjectModel组件对象模型)标准的服务器接口构件,COM是微软公司制定的构造二进制兼容软件的规范,目的是让开发者和使用者脱离,这样用户可以使用COM构件随意组装,利用它们实现自己的功能,完成软件开发工作,通过简单的编程达到专业的效果。石油测井或水利工程测井柱状剖面图,来表征和展示地下的各种地质信息。柱状剖面图简称柱状图,以探测深度作为垂直坐标,地层、岩性、以及各种测井曲线和解释成果用符号表示出来。 测井主要以各种岩石的物性差异为基
3、础,通过相应的地球物理方法,连续测定反映岩石物理性质的参数,并在分析这些物理参数沿井深剖面变化规律的基础上,了解油气储集层的地下分布规律,评价油气储集层的生产能力以及解决工程地质方面的问题。测井已经成为目前石油和工程地质上不可缺少的手段,对测井资料利用的好坏程度将直接和间接地影响勘探成果的质量,而资料成图在利用测井资料方面占着至关重要的角色。当前测井绘图方面的软件都有着不同程度的不尽人意之处,结合工作实际,编制了该程序。 1基本设计思想将测井数据导入Excel,解释成果按照一定的格式输入。启动程序,打开数据文件,程序提示你输入标题、比
4、例、字体等,然后程序根据你选择的数据页面控制Excel自动绘制图形,绘制结束后用户不满意的地方还可以Excel中再修改。在绘制柱状图的岩性时,利用的是图库调入,节约了绘制符号的时间,提高了效率,另外,用户还可以自己添加图库,以期能够更加完美地表达自己的意思,做到“以人为本”的设计理念。图1基本流程2编程实现在程序设计的时候,利用的编译环境是C++Builder5.0,用到的技术是COM编程中的Automation。在编程的时候,力求多做工作,就会很容易上手,用的时候也会很轻松。 2.1主要编程技术 在编程过程中,我选用引入类型库的
5、方法,这样可以利用类型库查询服务器对象(也即Excel)在C++外套包装下的说明,可以查询要用到的方法的参数类型和返回值,这一点很重要。在调用中,采用了Interface智能接口的方法,通过函数的调用,返回需要的对象,然后就可以采用伪指针的语法直接调用该对象的方法。 2.2启动Excel服务器部分实现的代码,在打开文件时如下所示:Excel_tlb::TCOM_Applicationm_XLApp;//定义Excel对象Excel_tlb::WorksheetPtrm_Workbook;//定义worksheet对象Excel_tlb
6、::WorkbookPtrm_Workbook;//定义workbook对象Void_fastcallTForm1:Button1Click(Toject*Sender){if(OpenDialog1->Execute()){try{if(!m_XLApp)//判断Excel服务器是否打开{m_XLApp=CoApplication_::Create();//没有打开,就创建Excel服务器对象m_XLApp->set_Visible(0,true);//使Excel显示运行m_XLApp->Caption=WideString(Op
7、enDialog1->FileName);//设置Excel的标题m_Workbook=m_XLApp->Workbooks->Add(WideString(OpenDialog1->FileName));//打开选择的Excel文件薄}//endifelse{m_XLApp->set_Visible(0,true);//如果服务器已经打开,就显示出来m_XLApp->Caption=WideString(OpenDialog1->FileName);m_Workbook=m_XLApp->Workbooks->Add(WideStr
8、ing(OpenDialog1->FileName));}}//endoftrycatch(...){ShowMessage(″CantOpenFile!″);}} 上面这段程序比较简单易懂,也有比较清楚地注释,不用
此文档下载收益归作者所有