標籤:port 開始 excel lis pen file rom int 參數調用
為了將excel資料自動轉換成所需要的erlang資料,聽同事說使用python會很方便簡單,就自學了兩天python,寫了一個比較粗糙的python指令碼,不過能用,有什麼最佳化的地方請指教
代碼如下:
#!/usr/bin/env python# -*- coding: 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 # 分頁列數 content = [] # 資料內容 id_list = [] # ID列表# ===============================================start concat need data================================================ content.append(‘%% this file is auto maked!\n‘) content.append(‘-module(‘ + filename + ‘).\n‘) content.append(‘-compile(export_all).\n‘) for i in range(4, ws.max_row + 1): # 從表格第三行開始讀取,由於range函數不包含檔案尾,所以為了讀到最後一行需+1 for j in range(ws.max_column): 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(‘ {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 ‘create new file:‘, filename + ‘.erl‘ f.close() # 關閉通道 returndef start_gen(): # 刪除舊的資料 delnames = os.listdir(‘./server‘) for delname in delnames: os.remove(‘./server/‘ + 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()
其中路徑由於沒有作相容,所以路徑必須得正確
使用python指令碼,讀取excel表格產生erlang資料