用Excel快速实现测井柱状图的绘制

更新时间:2024-06-22 15:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

用Excel快速实现测井柱状图的绘制

李广超 (工程物探院)

[摘 要] 利用COM编程中的自动化技术,蚩?SPAN lang=EN-US>Excel文件,进行绘图,达到快速制作油气和工程物探测井柱状图的目的,使用该方法充分利用Excel的强大功能,方便用户。 [关键词] 〖HTSS〗Excel COM 测井柱状剖面图

Excel是一个出色的电子表格软件,是迄今为止市场上功能最强的电子表格软件,从大型的企业公司到个人家庭都是应用最广泛的,有良好的用户基础,具有友好的界面,功能强大的数据计算能力和内部函数,还可以把数据以各种统计图的形式形象的表示出来,进行数据分析。

Excel既是一个独立运行的程序,也是一个遵循COM(Commponent Object Model组件对象模型)标准的服务器接口构件,COM是微软公司制定的构造二进制兼容软件的规范,目的是让开发者和使用者脱离,这样用户可以使用COM构件随意组装,利用它们实现自己的功能,完成软件开发工作,通过简单的编程达到专业的效果。

石油测井或水利工程测井柱状剖面图,来表征和展示地下的各种地质信息。柱状剖面图简称柱状图,以探测深度作为垂直坐标,地层、岩性、以及各种测井曲线和解释成果用符号表示出来。

测井主要以各种岩石的物性差异为基础,通过相应的地球物理方法,连续测定反映岩石物理性质的参数,并在分析这些物理参数沿井深剖面变化规律的基础上,了解油气储集层的地下分布规律,评价油气储集层的生产能力以及解决工程地质方面的问题。测井已经成为目前石油和工程地质上不可缺少的手段,对测井资料利用的好坏程度将直接和间接地影响勘探成果的质量,而资料成图在利用测井资料方面占着至关重要的角色。当前测井绘图方面的软件都有着不同程度的不尽人意之处,结合工作实际,编制了该程序。

1 基本设计思想

将测井数据导入Excel,解释成果按照一定的格式输入。启动程序,打开数据文件,程序提示你输入标题、比例、字体等,然后程序根据你选择的数据页面控制Excel自动绘制图形,绘制结束后用户不满意的地方还可以Excel中再修改。在绘制柱状图的岩性时,利用的是图库调入,节约了绘制符号的时间,提高了效率,另外,用户还可以自己添加图库,以期能够更加完美地表达自己的意思,做到“以人为本”的设计理念。

图1 基本流程

2 编程实现

在程序设计的时候,利用的编译环境是C++ Builder5.0,用到的技术是COM编程中的Automation。在编程的时候,力求多做工作,就会很容易上手,用的时候也会很轻松。

2.1 主要编程技术

在编程过程中,我选用引入类型库的方法,这样可以利用类型库查询服务器对象(也即Excel)在C++外套包装下的说明,可以查询要用到的方法的参数类型和返回值,这一点很重要。在调用中,采用了Interface智能接口的方法,通过函数的调用,返回需要的对象,然后就可以采用伪指针的语法直接调用该对象的方法。

2.2 启动Excel服务器

部分实现的代码,在打开文件时如下所示:

Excel_tlb :: TCOM_Application m_XLApp ; //定义Excel对象 Excel_tlb :: WorksheetPtr m_Workbook ;//定义worksheet对象 Excel_tlb :: WorkbookPtr m_Workbook ;//定义workbook对象 Void_fastcall TForm1: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(OpenDialog1->FileName );//设置Excel的标题

m_Workbook=m_XLApp->Workbooks->Add(WideString(OpenDialog1->Fil eName));//打开选择的Excel文件薄 } // end if else {

m_XLApp->set_Visible(0, true);//如果服务器已经打开,就显示出来 m_XLApp->Caption=WideString(OpenDialog1->FileName );

m_Workbook=m_XLApp->Workbooks->Add(WideString( OpenDialog1->FileName)); }

}//end of try catch(...) {

ShowMessage(″Cant Open File!″); } }

上面这段程序比较简单易懂,也有比较清楚地注释,不用多做解释,其功能就是在程序打开文件的菜单里,控制Excel的启动并打开了用户所选择的Excel文件。这一步对程序来说却是很重要的,没有这些其他就无从谈起。 m_XLApp->Workbooks->Add(xlWBATWorksheet,0);

m_Worksheet=m_XLApp->Workbooks->get_Item(1)->Worksheet->get_Item(1); m_Worksheet->Name=WideString(“我添加的页面\; for(int i=1;i<=20;i++) {

m_Worksheet->Cells->set_Default(i,1,i*10); m_Worksheet->Cells->set_Default(i,2,i*15); }

m_SheetRange=m_Worksheet->get_Range(“C1:F10\; m_SheetRange->Formula=“RAND()\;

上面的一段程序用于在Excel中添加一个工作表,然后将它赋给一个工作表对象指针,将此工作表的名字改为“我的添加页面”;在循环里在工作表中插入了40个数据,分别添加在工作单的第一、第二列的前二十个单元格中,最后两句用0和1之间的随机数填充C1到F10之间的所有单元。这是向Excel单元格中写入数据,那么同样的道理,在绘制图形的时候,就可以从其中读取数据,绘制所需的图件了。

3 实例显示

下面给出该软件绘制的某钻孔石油综合测井地质剖面图的实例,只给出原图的部分图件如图2所示。

图2 石油测井柱状图

下面的是水利工程综合测井柱状图,此图中曲线的数据是模拟的。

图3 工程测井柱状图

4 作用及意义

此程序主要应用自动控制技术,操纵Excel,从Excel中读取数据,并在其中绘制图形,在编程中有一定难度,却实现了高速绘制图形,适用于原始和解释的资料成图,提高了工作效率,为在综合测井图形的绘制方面提供了新的途径。 该程序针对的是笔者单位在水利工程综合测井成图的格式编写的,有一定的局限性,改变绘制图形的框架结构,需要对程序作一点调整。

本文来源:https://www.bwwdw.com/article/5rd3.html

Top