1. 程式人生 > >Python3.x操作Excel(1)

Python3.x操作Excel(1)

import  xlwt

"""
enumerate的用法
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>>list(enumerate(seasons))                 # 小標從 0 開始
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>>list(enumerate(seasons, start=1))       # 小標從 1 開始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
"""
def CreatExcel(filename):
    """建立Excel表格"""
    #建立workbook即新建excel檔案/工作博
    filebook=xlwt.Workbook(encoding='utf-8')
    #建立工作工作表,如果想建立多個工作表,直接在後面
    worksheet=filebook.add_sheet(filename)
    #返回建立的表格名和路徑
    infoDic={'key1':filebook,'key2':worksheet,'key3':filename}
    #返回工作簿和工作表的字典型別值
    return infoDic

def addDataExcel(infodic):
    """在表格中新增資料"""
    #對傳入的字典型別的資料進行解析
    filebook=infodic.get('key1')#獲得工作簿
    worksheet=infodic.get('key2')#獲得表
    filename=infodic.get('key3')#檔名
    # 字典資料
    #巢狀:內部巢狀列表型
    data = {
        "1": ["張三", 150, 120, 100],
        "2": ["wang", 90, 99, 95],
        "3": ["wu", 60, 66, 68]
        }
    ldata = []#列表資料
    # for迴圈指定取出key值存入num中
    num = [a for a in data]
    # 字典資料取出後無序,需要先排序
    num.sort()
    # for迴圈將data字典中的鍵和值分批的儲存在ldata中
    #ldata=[["張三", 150, 120, 100] ["wang", 90, 99, 95] ["wu", 60, 66, 68]]
    for x in num:
        t = [int(x)]
        #x表示鍵值,根據鍵值取出字典中相應的值
        for a in data[x]:
            #a中存放的是data資料中x鍵值對應的資料
            t.append(a)
        ldata.append(t)

    # 將資料寫入檔案,i是enumerate()函式返回的序號數,表示行
    #第一次循壞:第一個for(1,["張三", 150, 120, 100])  i=1(row),p=["張三", 150, 120, 100]
    #           第二個for(1,"張三")  j=1(col),q="張三"
    #                   (2,"150")   j=2(col),
    #                   (3,"120")   j=3(col),
    #                   (4,"100")   j=4(col),
    #第二次循壞:
    #第三次迴圈:
    for i, p in enumerate(ldata):
        #j是enumerate()函式返回的序號數,表示列
        for j, q in enumerate(p):
            worksheet.write(i, j, q)#row行,col列,data資料
        filebook.save(filename)
    return "OK"

if __name__=='__main__':
    #注意,如果字尾型別名為xlsx可能會出現打不開的現象。需要修正為xls
    #主要是因為xlwt只支援Excel 2003,xlsx
    excelDic=CreatExcel("myExcel.xls")
    mark=addDataExcel(excelDic)
    print(mark)