表格處理
目標將前表中的任務編號替換為后表中的具體內容。
# 讀取表格組件
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()