阳光石油网|石油技术交流|石油人论坛

 找回密码
 欢迎注册
查看: 1988|回复: 13

[Petrel使用技巧] 小python脚本批量处理测井解释结论Excel文件

[复制链接]
  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

    发表于 2021-1-21 15:19:31 | 显示全部楼层 |阅读模式

    马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。

    您需要 登录 才可以下载或查看,没有账号?欢迎注册

    x
    话不多说,先给脚本内容:
    Screenshot 2021-01-21 145937.png

    from xlrd import open_workbook
    excel = open_workbook("aaa20201223.xls")
    sheets = excel.sheet_names()
    fileFP =open("logresults.dat",'w+')

    for ii in range(excel.nsheets):
        sheet = excel.sheet_by_index(ii)
    ###   
        for row_index in range(1, sheet.nrows):
       
          if ("油水" in sheet.cell(row_index,14).value):
            petro = 3
          elif ("差" in sheet.cell(row_index,14).value):
            petro = 1   
          elif ("干" in sheet.cell(row_index,14).value):
            petro = 5      
          elif ("可能" in sheet.cell(row_index,14).value):
            petro = 6
          elif ("油" in sheet.cell(row_index,14).value):
            petro = 2  
          elif ("水" in sheet.cell(row_index,14).value):
            petro = 4  
          else:
            petro = 0
            
          fileFP.write(str("%s \t%s \t%s \t%i\n"%(sheet.name, sheet.cell(row_index,2).value, sheet.cell(row_index,3).value, petro)))

    fileFP.close()


    如果我们有一个叫做“aaa20201223.xls”的测井解释汇总表,其中每一口井设了一个表(sheet),表格格式是固定的,都有一行表头,第三列记录了解释层的顶深,第四列记录了解释层的底深,第十五列记录了测井解释结论。

    我们需要形成一个Production Log来加载进Petrel。

    这个python脚本,只是几句话,即可实现从excel到Production Log的自动转换。一眨眼之间完成这样的工作,还不会出现读写误差。
  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2021-1-27 11:11:19 | 显示全部楼层
    qqlewis 发表于 2021-1-27 08:42
    for row_index in range(1, sheet.nrows):
    这个索引是先列后行么?

    for这个循环只是行(row)的穷举,从第二行到最后一行做循环。

    sheet.cell(row_index,14).value其实是那个叫“xlrd”的规定,就是在sheet这个表上去读“行数(循环中)”对应15列的网格(cell)上的值(value)。

    你如果感兴趣可以去查阅python和xlrd的例子或者说明材料。
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    郁闷
    2021-8-1 11:51
  • 签到天数: 360 天

    [LV.8]以坛为家I

    发表于 2021-1-21 15:54:56 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2021-1-21 16:39:01 | 显示全部楼层
    给力的楼主!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-3-2 08:51
  • 签到天数: 70 天

    [LV.6]常住居民II

    发表于 2021-1-22 08:24:59 | 显示全部楼层
    赞!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2023-12-14 19:08
  • 签到天数: 184 天

    [LV.7]常住居民III

    发表于 2021-1-22 23:31:53 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-7-24 21:23
  • 签到天数: 1554 天

    [LV.Master]伴坛终老

    发表于 2021-1-25 08:19:35 | 显示全部楼层
    学习学习,谢谢楼主!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 1483 天

    [LV.10]以坛为家III

    发表于 2021-1-27 08:42:19 | 显示全部楼层
    for row_index in range(1, sheet.nrows):
    这个索引是先列后行么?

    if ("油水" in sheet.cell(row_index,14).value):
    这个索引是先行后列?

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 1483 天

    [LV.10]以坛为家III

    发表于 2021-1-31 23:37:04 | 显示全部楼层
    Joseph 发表于 2021-1-27 11:11
    for这个循环只是行(row)的穷举,从第二行到最后一行做循环。

    sheet.cell(row_index,14).value其实是 ...


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-1-11 00:20
  • 签到天数: 38 天

    [LV.5]常住居民I

     楼主| 发表于 2022-8-27 15:49:54 | 显示全部楼层
    做了个更新,换了一种读取xlsx文件的库:
    Picture1.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 欢迎注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|阳光石油网 ( 鲁ICP备2021003870号-1 )

    GMT+8, 2024-5-3 04:58 , Processed in 0.083344 second(s), 24 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表