[Python] 纯文本查看 复制代码
import xlwt,xlrd
import os
import sys
# 1.读取当前目录下的工作簿(任意文件名)(.xlsx.xls.等等等格式的表格文件)(读取到的第一个,我只放一个进去)
# 2.读取工作簿里的第一个工作表
# 3.取消合并所有单元格
# 4.删除B列的内容里所有非数字的字符
# 5.删除B列的内容里包含非数字的所有行(包括空白)
# 6.筛选N列,列出筛选条件,输入序号选择条件进行筛选
# 7.只保留筛选N列后的内容
# 8.新建一个工作簿
# 9.新的工作簿第一个工作表的A列是刚刚读取的工作表的B列的内容('+ 数字/文本/空白)
# 10.新的工作簿第一个工作表的C列是刚刚读取的工作表的M列的内容("SF+数字"/JD+数字)
# 11.新的工作簿第一个工作表的B列根据C列的内容来判断
# 判断条件:
# C列的内容去除所有非字母和数字的字符
# 如果C列的内容前两个字符是SF或者sf,那么B列的内容是shunfeng
# 如果C列的内容前两个字符是JD或者jd,那么B列的内容是jd
# 12.保存新的工作簿为.xls文件
def main():
# 1
file = os.listdir(os.getcwd())
for i in file:
if i.endswith('.xlsx') or i.endswith('.xls'):
file = i
break
# 2
workbook = xlrd.open_workbook(file)
sheet = workbook.sheet_by_index(0)
# 3
sheet.unmerge_cells(0,0,sheet.nrows,sheet.ncols)
# 4
for i in range(sheet.nrows):
if sheet.cell(i,1).ctype == 2:
sheet.cell(i,1).value = int(sheet.cell(i,1).value)
else:
sheet.cell(i,1).value = ''
# 5 删除B列的内容里包含非数字的所有行(包括空白)
for i in range(sheet.nrows):
if sheet.cell(i,1).ctype != 2:
sheet.row(i).clear()
# 6 筛选第N列,列出筛选条件,输入序号选择条件进行筛选
print('筛选条件:')
for i in range(sheet.ncols):
print(i,sheet.cell(0,i).value)
print('输入筛选条件的序号:')
n = int(input())
print('筛选条件:')
# 7 只保留筛选N列后的内容
for i in range(sheet.nrows):
if sheet.cell(i,n).ctype != 1:
sheet.row(i).clear()
# 8 新建一个工作簿
new_workbook = xlwt.Workbook()
new_sheet = new_workbook.add_sheet('sheet1')
# 9 新的工作簿第一个工作表的A列是刚刚读取的工作表的B列的内容('+ 数字/文本/空白)
for i in range(sheet.nrows):
if sheet.cell(i,1).ctype == 2:
new_sheet.write(i,0,'+ '+str(sheet.cell(i,1).value))
elif sheet.cell(i,1).ctype == 1:
new_sheet.write(i,0,'+ '+sheet.cell(i,1).value)
else:
new_sheet.write(i,0,'+ ')
# 10 新的工作簿第一个工作表的C列是刚刚读取的工作表的M列的内容("SF+数字"/JD+数字)
for i in range(sheet.nrows):
if sheet.cell(i,12).ctype == 2:
new_sheet.write(i,2,'SF'+str(int(sheet.cell(i,12).value)))
elif sheet.cell(i,12).ctype == 1:
new_sheet.write(i,2,'SF'+sheet.cell(i,12).value)
else:
new_sheet.write(i,2,'SF ')
# 11 新的工作簿第一个工作表的B列根据C列的内容来判断
# 判断条件:
# C列的内容去除所有非字母和数字的字符
# 如果C列的内容前两个字符是SF或者sf,那么B列的内容是shunfeng
# 如果C列的内容前两个字符是JD或者jd,那么B列的内容是jd
for i in range(sheet.nrows):
if sheet.cell(i,12).ctype == 2:
if str(int(sheet.cell(i,12).value)).startswith('SF') or str(int(sheet.cell(i,12).value)).startswith('sf'):
new_sheet.write(i,1,'shunfeng')
elif str(int(sheet.cell(i,12).value)).startswith('JD') or str(int(sheet.cell(i,12).value)).startswith('jd'):
new_sheet.write(i,1,'jd')
elif sheet.cell(i,12).ctype == 1:
if sheet.cell(i,12).value.startswith('SF') or sheet.cell(i,12).value.startswith('sf'):
new_sheet.write(i,1,'shunfeng')
elif sheet.cell(i,12).value.startswith('JD') or sheet.cell(i,12).value.startswith('jd'):
new_sheet.write(i,1,'jd')
else:
new_sheet.write(i,1,' ')
# 12 保存新的工作簿为.xls文件
new_workbook.save('new.xls')