[erlang] [python] 在excel设定固定规则,转换为erl和hrl文件
来源:互联网 发布:安卓机顶盒软件 编辑:程序博客网 时间:2024/06/05 11:07
为了方便游戏中固定规则的设定,可以先由策划人员把固定的规则写入excel,在转化在erlang中的hrl和erl文件读取
感谢模板提供http://www.jb51.net/article/122146.htm
python代码如下:
#!/usr/bin/env python# -*- coding: UTF-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8')import sysfrom openpyxl.reader.excel import load_workbookimport osimport os.pathdef gen_data(filename): wb = load_workbook('dataxlsx/' + filename + '.xlsx') # 加载文件所有分页 sheetnames = wb.get_sheet_names() # 获取所有分页的名字列表 ws = wb.get_sheet_by_name(sheetnames[0]) # 取第一个分页的数据 # print 'ws:', ws # print "Work Sheet Titile:", ws.title # 分页名称 # print "Work Sheet Rows:", ws.max_row # 分页行数 # print "Work Sheet Cols:", ws.max_column # 分页列数 hrlcontent = [] # hrl数据内容 content = [] # 数据内容 id_list = [] # ID列表 # ========================start concat need data================= content.append('%% this file is auto maked!\n') content.append('-module(data_' + filename.lower() + ').\n') content.append('-include("../include/data_'+ filename.lower() +'_record.hrl").\n') content.append('-export([get/1, id_list/0, length/0]).\n') hrlcontent.append('-ifndef(' + filename.upper() + '_RECORD).\n' + '-define(' + filename.upper() + '_RECORD, true).\n\n') for j in range(ws.max_column - 1): if j == 0: hrlcontent.append('-record(' + filename.lower() + '_config,\n {\n') hrlcontent.append(' ' + str(ws[10][j].value).strip() + ',\n') elif j == ws.max_column - 2: hrlcontent.append(' ' + str(ws[10][j].value).strip() + '\n') else: hrlcontent.append(' ' + str(ws[10][j].value).strip() + ',\n') hrlcontent.append(' }).\n\n') hrlcontent.append('-endif.') for i in range(11, ws.max_row - 7): # 从表格第三行开始读取,由于range函数不包含文件尾,所以为了读到最后一行需+1 for j in range(ws.max_column - 1): if ws[i][j].value == None: content.append(' ,""') elif j == 0: id_list.append(int(ws[i][j].value)) content.append('get(' + str(ws[i][j].value).strip() + ') ->\n') content.append(' #' + filename.lower() + '_config\n {\n '+ str(ws[10][j].value).strip() +' = '+ str(ws[i][j].value).strip() + ',\n') elif j == ws.max_column - 2: content.append(' ' + str(ws[10][j].value).strip() + ' = ' + str(ws[i][j].value).strip() + '\n') else: content.append(' ' + str(ws[10][j].value).strip() + ' = ' + str(ws[i][j].value).strip() + ',\n') content.append(' };\n') content.append('get(_) ->\n') content.append(' not_match.\n') content.append('length() ->\n') content.append(' ' + str(ws.max_row - 18) + '.\n') content.append('id_list() ->\n ' + str(id_list) + '.') # ==============================end=========================== # 写入数据 f = file('./server/data_' + filename.lower() + '.erl', 'w+') f.writelines(content) print 'create new file:data_', filename.lower() + '.erl' f.close() # 关闭通道 h = file('./include/data_' + filename.lower() + '_record.hrl', 'w+') h.writelines(hrlcontent) print 'create new file:data_', filename.lower() + '_record.hrl' h.close() # 关闭通道 returndef start_gen(): # 删除旧的数据 delnames = os.listdir('./server') for delname in delnames: os.remove('./server/' + delname) print 'delete old file:', delname delnames = os.listdir('./include') for delname in delnames: os.remove('./include/' + delname) print 'delete old file:', delname for _, _, filenames in os.walk('./dataxlsx'): # 遍历文件夹 for filename in filenames: # 遍历文件 find = filename.find('.xlsx') # 返回该文件名称长度 # print "find is:", find if filename[0] == '~' or find == -1: # 文件名以'~'开头或者找不到文件名, 如以'.'开头的文件 continue else: split_list = filename.split('.') # 使用'.'分割文件名,获得[文件名,文件格式] # print split_list gen_data(split_list[0]) # 用文件名作为参数调用gen_datastart_gen()
阅读全文
0 0
- [erlang] [python] 在excel设定固定规则,转换为erl和hrl文件
- [Erlang].erl文件的一生
- Idea erlang 引入 .hrl文件中的宏,idea 显示Unresolved
- [erl] erlang 进程注册和注销
- python 将txt文件转换为excel
- erlang -> afile_sever.erl
- erlang c.erl
- python把excel文件转换为指定的json格式
- 利用Python将excel表格转换为json文件
- 为linux设定固定IP
- 将固定文件夹文件转换为XML
- 读取Excel 文件 转换为(DataSet)DataTable,在转化成.xml文件
- DataSet和DataTable转换为excel文件的类,最基本的转换
- 把Excel文件内容转换为dataset
- txt文件转换为Excel.rar
- 将Excel文件转换为Html
- 怎么转换pdf格式为Excel文件
- 将Excel文件转换为Html
- activiti数据库表结构
- Replugin Application初始化流程
- c类似C++ 类写法--延时可以写的很精简
- Android 权限使用问题
- 2017.11.2总结,回顾及成果
- [erlang] [python] 在excel设定固定规则,转换为erl和hrl文件
- tomcat7优化之JVM参数
- windows安装node.js和npm,介绍
- Android studio使用JNI实例(1)
- MongoDB入门学习(2)增删改查
- jsp页面EL表达式不起作用的问题
- div页面跳转
- Android系统启动流程(二)
- 50 多个 ML、NLP 和 Python 相关的教程