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