python 第三方库——xlrd,xlwt,pywin32 操作Excel文件

pip install xlrd

pip install xlwt

Pywin32 模块中包含win32com模块

pip install pypiwin32

1.用 Python 删除中excel表格中某列重复的项,并将整行删去。

No 姓名 分数 特长 爱好 评级
1 张三 99 足球 体育

优秀

2 李四 32 足球 体育 不合格
3 王五 96 唱歌 音乐 优秀

假设有很行,我们仅仅想保留不同的评级信息。

即经过处理,上述表格将简化为:

No 姓名 分数 特长 爱好 评级
1 张三 99 足球 体育

优秀

2 李四 32 足球 体育 不合格

具体程序如下:

import xlrd

import xlwt

file = "first.xlsx"

# data = xlrd.open_workbook(path + '/' +file_r)

data = xlrd.open_workbook(file)

# nums = len(data.sheets())

sheet1 = data.sheets()[0]


#获取行数

nrows = sheet1.nrows

#获取列数

ncols = sheet1.ncols

#定义空list

rows_get = []

valueList = []

#循环行

for i in range(1,nrows):

   A0 = sheet1.cell(i,6).value

  A0 = A0.strip()

   print(A0)

#不从第一行开始判断,因为第一行的姓名行我们需要保留,后面不需要,这里选3(根据具体情况而定)吧


   if A0 not in valueList:

#加入row_get

rows_get.append(i)   

valueList.append(A0)

else:

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('new.xls')

2. 用正则项模糊匹配某列中的内容,并将本行内容过滤掉,生成一个新的excel表。

import re
import xlrd
import xlwt
match_str = r'QoS Data, SN=\d{3}, FN=\d, Flags=*'  #比如匹配‘QoS Data, SN=160, FN=0, Flags=.p...FP’
file = "new.xls"
data = xlrd.open_workbook(file)
sheet1 = data.sheets()[0]
#获取行数
nrows = sheet1.nrows
#获取列数
ncols = sheet1.ncols
rows_delet = []
for i in range(1,nrows):
    A0 = sheet1.cell(i, 6).value
    A0 = A0.strip()
    #不从第一行开始判断,因为第一行的姓名行我们需要保留,后面不需要,这里选3(根据具体情况而定)吧
    if re.match(match_str, A0):
        #加入row_get
        rows_delet.append(i)
    else:
         continue
rows_olds = list(range(nrows))
rows_news = list(set(rows_olds).difference(set(rows_delet)))
#新建工作簿
workbook = xlwt.Workbook('ascii')
#新建sheet
sheet_w = workbook.add_sheet('write')

#定义初始变量
wx = 0
#循环rows_get
for x in rows_news:
    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('new1.xls')

你可能感兴趣的:(python)