python實現 Excel 轉為json
一、準備 python 對excel操作,需要依賴Xlrd和xlwt這兩個模組。Xlrd是讀excel用到的模組,xlwt是寫入excel用到的模組。 下載:https://pypi.python.org/pypi/xlrd https://pypi.python.org/pypi/xlwt
如果只是讀excel檔案,只需下載xlrd即可
二、代碼實現:
# -*- coding:utf-8 -*-# @Date : 2016-07-13 14:47:56# @Function: 把Excel表單轉化為json檔案# @Author : JennyZhangimport xlrdimport jsonimport codecsimport os#把excel表格中指定sheet轉為jsondef Excel2Json(file_path): #開啟excel檔案 if get_data(file_path) is not None: book = get_data(file_path) #抓取所有sheet頁的名稱 worksheets = book.sheet_names() print "該Excel包含的表單列表為:\n" for sheet in worksheets: print ('%s,%s' %(worksheets.index(sheet),sheet)) inp = raw_input(u'請輸入表單名對應的編號,對應表單將自動轉為json:\n') sheet = book.sheet_by_index(int(inp)) row_0 = sheet.row(0) #第一行是表單標題 nrows=sheet.nrows #行號 ncols=sheet.ncols #列號 result={} #定義json對象 result["title"]=file_path #表單標題 result["rows"]=nrows #行號 result["children"]=[] #每一行作為數組的一項 #遍曆所有行,將excel轉化為json對象 for i in range(nrows): if i==0: continue tmp={} #遍曆當前行所有列 for j in range(ncols): #擷取當前列中文標題 title_de=str(row_0[j]).decode('unicode_escape') title_cn= title_de.split("'")[1] #擷取儲存格的值 tmp[title_cn]=sheet.row_values(i)[j] result["children"].append(tmp) json_data=json.dumps(result,indent= 4,sort_keys=True).decode('unicode_escape') saveFile(os.getcwd(),worksheets[int(inp)],json_data) print json_data# 擷取excel資料來源def get_data(file_path): """擷取excel資料來源""" try: data = xlrd.open_workbook(file_path) return data except Exception, e: print u'excel表格讀取失敗:%s' %e return Nonedef saveFile(file_path,file_name,data): output = codecs.open(file_path+"/"+file_name+".json",'w',"utf-8") output.write(data) output.close()if __name__ == '__main__': file_path = raw_input(u'請輸入excel檔案路徑:\n') json_data=Excel2Json(file_path)
注意:如果程式在你的環境下出錯,請檢查編碼。在處理中文的地方做改動
三、結果示範 運行上面的代碼,按提示操作。 (1)輸入excel檔案的路徑(如圖中"E:/mid-exam.xlsx"),斷行符號 (2) 選擇你想要轉換的表單編號(如圖中選了0),斷行符號
(3)輸出轉換後的json。並把結果儲存在當前路徑下。檔案名稱為表單名。