循环遍历excel表1中的每一行数据,把数据存储在列表中,将该数据作为key,在另一个excel表中查询带有key的特定行,并将该行输出到新表2中,表1 和表2 的格式相同。
import os
import xlsxwriter as xlsxwriter
import xlwt
import xlrd
##遍历函数
def files(dirpath, suffix=['.xls', 'xlsx']):
for root, dirs, files in os.walk(dirpath):
for name in files:
if name.split('.')[-1] in suffix:
yield os.path.join(root, name)
#查找
def select(d,z):
# y=0
try:
file_list = files(dirpath)
for filename in file_list:
workbook = xlrd.open_workbook(filename, encoding_override="utf-8")
#workbook = xlrd.open_workbook(filename) # 读取源excel文件
print(filename)
sheetnum = workbook.nsheets # 获取源文件sheet数目
for m in range(0, sheetnum):
sheet = workbook.sheet_by_index(m) # 读取源excel文件第m个sheet的内容
nrowsnum = sheet.nrows # 获取该sheet的行数
for i in range(0, nrowsnum):
date = sheet.row(i) # 获取该sheet第i行的内容
for n in range(0, len(date)):
aaa = str(date[n].value) # 把该行第n个单元格转化为字符串,目的是下一步的关键字比对
# print("===========aaa",aaa)
# 以下两行达到多个关键词提取目的
#
# for k in range(0, len(d)):
# keyword = str(d[k])
# print(keyword)
# if aaa.find(d) > 0: # 进行关键字比对,包含关键字返回1,否则返回0
if aaa == d:
# y = y + 1
print("================哈哈 找到了")
for j in range(len(date)):
wsheet.write(z, j+1, sheet.cell_value(i, j)) # 该行包含关键字,则把它所有单元格依次写入入新生成的excel的第y行
wsheet.write(z, len(date)+1, '本校教师') # print(wsheet.write)
else:
wsheet.write(z, 0, d) # 该行包含关键字,则把它所有单元格依次写d
except Exception as e:
print(e)
if __name__ == '__main__':
y = 0 # 生成的excel的行计数
d = []
#教师表
dirpath = r'E:\python\rename_tools\date\4\jiaoShi'
jieguo = xlsxwriter.Workbook("jieguo.xlsx") # 生成excel
wsheet = jieguo.add_worksheet('sheet name') # 生成sheet
#第一作者
wb=xlrd.open_workbook(r'E:\python\rename_tools\date\1\ssciTxun.xlsx')
sheet_num=wb.nsheets #获取excel里面的sheet的数量
sheet_names=wb.sheet_names() #获取到Excel里面所有的sheet的名称列表,即使没有sheet也能用。
sheet=wb.sheet_by_index(0) #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
rows=sheet.nrows #获取sheet页的行数,一共有几行
print(rows)
columns=sheet.ncols #获取sheet页的列数,一共有几列
#获取第一行的数据
#row_data=sheet.row_values(1) #返回给定的行数的单元格数据进行切片,
one_data = sheet.cell(0, 0)
for i in range(1,rows):
one_data = sheet.cell(i, 0)
d.append(one_data.value)
print(d)
for z in range(len(d)):
select(d[z], z)
print(d[z])
print("========z", z)
jieguo.close()