实现过程
1.files函数可读取当前目录的所有xls格式文件
2.dstfilename函数实现某列关键词获取并去重
3keywordsdeal函数实现文件的写入生成
4main函数实现对keywordsdeal函数出栈,实现内存清空。避免内容重复写入
下面时所有 代码片
。
// An highlighted block
import os
import xlwt
import xlrd
##目的文件夹
filename = 'D:\\MyDocs\\dst.xls'
##遍历函数
# def files(dirpath):
# for root, dirs, files in os.walk(dirpath):
# for name in files:
# yield os.path.join(root, name)
def dstfilename():
filename = 'D:\\MyDocs\\dst.xls'
open(filename, 'r')
data = xlrd.open_workbook(filename) # 读取源excel文件
sheetnum = data.nsheets # 获取源文件sheet数目
a = 0
for m in range(0, sheetnum):
table = data.sheets()[m]
print(table)
table.ncols # 获取列表的有效列数
list = table.col_values(1, start_rowx=4, end_rowx=None) # 返回由该列中所有单元格的数据组成的列表
b = []
for i in list:
if i not in b:
a = a + 1
b.append(i)
for e in iter(b):
yield e
def keywordsdeal(keyword):
jieguo = xlwt.Workbook(encoding="ascii") # 生成excel
wsheet = jieguo.add_sheet('sheet name') # 生成sheet
y = 0 # 生成的excel的行计数
#d = dstfilename()
workbook = xlrd.open_workbook(filename) # 读取源excel文件
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):
data = sheet.row(i) # 获取该sheet第i行的内容
for n in range(0, len(data)):
aaa = str(data[n]) # 把该行第n个单元格转化为字符串,目的是下一步的关键字比对
if aaa.find(keyword) > 0: # 进行关键字比对,包含关键字返回1,否则返回0
y = y + 1
for j in range(len(data)):
wsheet.write(y, j, sheet.cell_value(i, j)) # 该行包含关键字,则把它所有单元格依次写入入新生成的excel的第y行
jieguo.save('class//'+keyword + '.xls') # 保存新生成的Excel
print('end')
# except Exception as e:
# print(e)
# jieguo.save(dsf+'.xls') # 保存新生成的Excel
if __name__ == '__main__':
d = dstfilename()
for keys in d:
print(keys)
keywordsdeal(keys)#函数出栈,内存释放