python實現 Excel 轉為json

來源:互聯網
上載者:User
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。並把結果儲存在當前路徑下。檔案名稱為表單名。


    
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.