用Python做自動化的表格處理(批量智能替換) - Python趣用之法2


表格處理

目標將前表中的任務編號替換為后表中的具體內容。
在這里插入圖片描述

# 讀取表格組件
import xlrd

# 寫入列表組件
import xlwt


# 表格自動化處理
def table():

    # 打開並且拿到需要的表格
    number = xlrd.open_workbook('xlsx/RawData.xlsx')
    content = xlrd.open_workbook('xlsx/target.xlsx')
    sheet_number = number.sheets()[0]
    sheet_content = content.sheets()[0]

    # 創建一個新的表格用於存儲數據
    word = xlwt.Workbook(encoding='utf-8')
    sheet1 = word.add_sheet(u'sheet1',cell_overwrite_ok=True)

    # 獲取表格列內容函數將此列以列表形式返回
    def table_col_content(cols, start, sheet):
        """ :param cols: 輸入要去的內容列數 :param start: 是否跳過第一行 :param sheet: 輸入需要操作的列表 :return: 取出的內容 """
        # 判斷是否需要跳過第一行
        if start:
            data = 1
        else:
            data = 0
        # 動態獲取列表中總行數
        nrows = sheet.nrows
        # 需要的內容
        data = sheet.col_values(cols, data, nrows)
        return data

    lis1 = table_col_content(3, 1, sheet_number)
    lis2 = table_col_content(4, 1, sheet_number)
    lis3 = table_col_content(5, 1, sheet_number)
    lis = table_col_content(0, 0, sheet_content)
    print(lis1[63])

    # 對比原始序列在對比序列中的位置,並返回對應位置序號
    def compare(old_list, compare_list):
        """ :param old_list: 需要對比的元素列表 :param compare_list: 進行對比的最新列表 :return: 返回原始列表在對比列表中的位置 """
        new_list = []
        for i in old_list:
            n = 0
            for j in compare_list:
                if i == j:
                    new_list.append(n)
                    break
                elif n == len(compare_list):
                    new_list.append(' ')
                n += 1
        return new_list
    lis1 = compare(lis1, lis)
    lis2 = compare(lis2, lis)
    lis3 = compare(lis3, lis)


    # 將序號變成對應位置的內容並輸出
    def change(num, sheet, start=1, end=2):
        """ :param num: 序號 :param sheet: 序號對應的內容所在的表格 :param start: 序號轉變內容列數開始的地方(默認為第二列開始) :param end: 序號轉變內容列數結束的地方(默認為第三列結束,不包含第三列) :return: 輸出對應的內容 """
        new_lis = []
        for n in num:
            if n == ' ':
                new_lis.append('')
            else:
                new_lis.append(sheet.row_values(n, start, end))
        return new_lis
    lis1 = change(lis1, sheet_content)
    lis2 = change(lis2, sheet_content)
    lis3 = change(lis3, sheet_content)
    # 將列表輸出到新的表格中
    def new_sheet(data, sheet, position=0):
        """ :param data: 需要輸入到列表中的數據 :param sheet: 需要輸入的列表 :param position:要保存到第幾列(默認為第一列) :return: """
        i = 0
        for n in data:
            sheet.write(i, position, n)
            i += 1
        return print('完成任務')
    new_sheet(lis1, sheet1, 0)
    new_sheet(lis2, sheet1, 1)
    new_sheet(lis3, sheet1, 2)
    # 保存
    word.save('xlsx/Data.xls')

table()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM