Python3.5 处理excel_1(
Python3.5 处理excel_1(删除多余行)
望共同进步
转载请注明地址 Http://mp.blog.csdn.net/postedit/79513650
处理excel这里需要两步:
1.读取excel: http://blog.csdn.net/weixin_39701039/article/details/79492672 ;
2.写入excel: http://mp.blog.csdn.net/postedit/79504931
这里主要讲怎样删除多余行
直接上代码了,代码中有思路及代码的部分注释
#coding:utf-8
#python3.5.1
import xlrd
import xlwt
import re #正则模块
path = r'G:\任务20180305\TEST'
file_r = 'del.xlsx'
data = xlrd.open_workbook(path + '/' + file_r)
nums = len(data.sheets())
sheet1 = data.sheets()[0]
#获取行数
nrows = sheet1.nrows
#获取列数
ncols = sheet1.ncols
#如图1,我们知道想要删除小面的空行、续表行、以及姓名行(第一行的姓名不能删除)
#思路:1.我们去除不需要行的行数(即哪一行),也就是获取我们所需要行在第几行的一个列表;2.循环这个列表,获取我们所需要的行数据,写入对应的excel中
#1
#定义空list
rows_get = []
#循环行
for i in range(nrows):
#获取第一列的各行数据
A0 = sheet1.cell(i,0).value
#去除首位空格
A0 = A0.strip()
#不从第一行开始判断,因为第一行的姓名行我们需要保留,后面不需要,这里选3(根据具体情况而定)吧
if i <3:
#加入row_get
rows_get.append(i)
else:
#开始正则部分
#规定正则格式,这里是匹配中文字符(因为表中含有continued table1行)
p = r'[\u4e00-\u9fa5]'
#编译
pattern = re.compile(p)
#在A0中匹配
try:
#判断A0中是否存在中文字符(这里把英文,空行剔除了)
ch_first = re.findall(pattern, A0)[0] #因为空list不能([0])选择第一个元素,会显示错误(IndexError: list index out of range)
#剔除续表行
if A0[0:2] == '续表':
pass
#剔除姓名行
elif A0[0:2] == '姓名':
pass
else:
rows_get.append(i)
except:
continue
#已经得到我们所需数据的行标数
print(rows_get)
#新建工作簿
workbook = xlwt.Workbook('ascii')
#新建sheet
sheet_w = workbook.add_sheet('write')
#定义初始变量
wx = 0
#循环rows_get
for x in rows_get:
for y in range(ncols):
sheet_w.write(wx,y,sheet1.cell(x,y).value) #wx,y 是写入sheet的行列标,sheet1.cell(x,y).value是原表我们需要的数据
wx = wx + 1 #行数加一,使得写入的sheet 行连续
#保存工作簿
workbook.save(path + '/' + 'new.xls')
#如图2
图1:

图2:

这里一个工作表会处理了,那多个表只是在前sheet的选择加个循环就行了
望有所帮助,望采纳!!
相关文章