表格处理
目标将前表中的任务编号替换为后表中的具体内容。
# 读取表格组件
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()