python读取excel表格生成erlang数据
为了将excel数据自动转换成所需要的erlang数据,听同事说使用python会很方便简单,就自学了两天python,写了一个比较粗糙的python脚本,不过能用,有什么优化的地方请指教
代码如下:
#!/usr/bin/envpython
#-*-coding:UTF-8-*-
importsys
fromopenpyxl.reader.excelimportload_workbook
importos
importos.path
defgen_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"WorkSheetTitile:",ws.title#分页名称
#print"WorkSheetRows:",ws.max_row#分页行数
#print"WorkSheetCols:",ws.max_column#分页列数
content=[]#数据内容
id_list=[]#ID列表
#========================startconcatneeddata=================
content.append('%%thisfileisautomaked!\n')
content.append('-module('+filename+').\n')
content.append('-compile(export_all).\n')
foriinrange(4,ws.max_row+1):#从表格第三行开始读取,由于range函数不包含文件尾,所以为了读到最后一行需+1
forjinrange(ws.max_column):
ifws[i][j].value==None:
content.append(',""')
elifj==0:
id_list.append(int(ws[i][j].value))
content.append('get('+str(ws[i][j].value).strip()+')->\n')
content.append('{r_'+filename+','+str(ws[i][j].value).strip())
else:
content.append(','+str(ws[i][j].value).strip())
content.append('};\n')
content.append('get(_)->\n')
content.append('not_match.\n')
content.append('length()->\n')
content.append(''+str(ws.max_row-1)+'.\n')
content.append('id_list()->\n'+str(id_list)+'.')
#==============================end===========================
#写入数据
f=file('./server/'+filename+'.erl','w+')
f.writelines(content)
print'createnewfile:',filename+'.erl'
f.close()#关闭通道
return
defstart_gen():
#删除旧的数据
delnames=os.listdir('./server')
fordelnameindelnames:
os.remove('./server/'+delname)
print'deleteoldfile:',delname
for_,_,filenamesinos.walk('./dataxlsx'):#遍历文件夹
forfilenameinfilenames:#遍历文件
find=filename.find('.xlsx')#返回该文件名称长度
#print"findis:",find
iffilename[0]=='~'orfind==-1:#文件名以'~'开头或者找不到文件名,如以'.'开头的文件
continue
else:
split_list=filename.split('.')#使用'.'分割文件名,获得[文件名,文件格式]
#printsplit_list
gen_data(split_list[0])#用文件名作为参数调用gen_data
start_gen()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。