天天看點

python實作在excel檔案中寫入和追加内容

excel是我們在日常工作中經常會用到的表格工具,我們在也已認證python來實作excel檔案中寫入和追加内容。
話不多說,上幹貨。
           
import xlwt
import xlrd
from xlutils.copy import copy


def write_to_excel(words, filename, sheet_name='sheet1'):
    '''
    将item存儲到excel中。
    :param words: 儲存item的list    [{},{}]格式
    :return:
    '''
    try:
        # 1、建立工作薄
        work_book = xlwt.Workbook(encoding='utf-8')
        # 2、建立sheet表單
        sheet = work_book.add_sheet(sheet_name)
        # 3、寫表頭
        # head = ['英文','中文']
        head = []
        for k in words[0].keys():
            head.append(k)

        for i in range(len(head)):
            sheet.write(0, i, head[i])
        # 4、添加内容
        # 行号
        i = 1
        for item in words:
            for j in range(len(head)):
                sheet.write(i, j, item[head[j]])
            # 寫完一行,将行号+1
            i += 1
        # 儲存
        work_book.save(filename)
        print('寫入excel成功!')

    except Exception as e:
        print('寫入excel失敗!', e)


def append_to_excel(words, filename):
    '''
    追加資料到excel
    :param words: 【item】 [{},{}]格式
    :param filename: 檔案名
    :return:
    '''
    try:
        # 打開excel
        word_book = xlrd.open_workbook(filename)
        # 擷取所有的sheet表單。
        sheets = word_book.sheet_names()
        # 擷取第一個表單
        work_sheet = word_book.sheet_by_name(sheets[0])
        # 擷取已經寫入的行數
        old_rows = work_sheet.nrows
        # 擷取表頭資訊
        heads = work_sheet.row_values(0)
        # 将xlrd對象變成xlwt
        new_work_book = copy(word_book)
        # 添加内容
        new_sheet = new_work_book.get_sheet(0)
        i = old_rows
        for item in words:
            for j in range(len(heads)):
                new_sheet.write(i, j, item[heads[j]])
            i += 1
        new_work_book.save(filename)
        print('追加成功!')
    except Exception as e:
        print('追加失敗!', e)


if __name__ == '__main__':
    # 樣例
    words1 = [
        {'name': 'aki', 'age': 18, 'gender': '女'},
        {'name': 'zed', 'age': 20, 'gender': '男'}
    ]

    words2 = [
        {'name': 'leblance', 'age': 19, 'gender': '女'},
        {'name': 'yasuo', 'age': 20, 'gender': '男'}
    ]
    # 寫入内容
    write_to_excel(words=words1, filename='demo.xls', )
    # 追加内容
    append_to_excel(words=words2, filename='demo.xls')

           

執行結果如下:

python實作在excel檔案中寫入和追加内容

生成的excel表格内容結果如下:

python實作在excel檔案中寫入和追加内容