Python:使用xlrd过滤execl表中数据

一、写代码前需要注意事项

首先我们需要注意:

python xlrd库的新版本2.0.1版本移除了对.xlsx格式的支持,只支持.xls格式。报错信息如下:

   File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/xlrd/__init__.py", line 170, in open_workbook
    raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+'; not supported')
xlrd.biffh.XLRDError: Excel xlsx file; not supported

解决方法:将xlrd版本回退到1.2.0版本,使用旧版本支持.xlsx格式。

pip3 uninstall xlrd
pip3 install xlrd=1.2.0

然后我们就可以开始愉快的写代码了

二、基本语法

导入模块

import xlrd

打开指定的excel文件,返回一个data对象

data = xlrd.open_workbook(file)                     #打开excel表,返回data对象

通过data对象可以得到各个sheet对象(一个excel文件可以有多个sheet,每个sheet就是一张表格)

Sheet1 = data.sheet_by_index(0)                     #通过索引顺序获取

Sheet1 = data.sheet_by_name(u‘sheet1’)            #通过名称获取

Sheet1 = data.sheets()[0]                           #通过索引顺序获取

num =data.nsheets                                   #返回sheet的数目

list = data.sheets()                                #返回所有sheet对象的列表

list = data.sheet_names()                           #返回所有sheet对象名字的列表

通过sheet对象可以获取各个单元格,每个单元格是一个cell对象

name = sheet1.name                  #返回sheet1的名称

nrows =sheet1.nrows                 #返回sheet1的行数

ncols = sheet1.ncols                #返回sheet1的列数

sheet1.cell_type(x,y)               #返回cell的对象类型

sheet1.cell(x,y).ctype              #返回cell的对象类型
# 即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式
#先判断表格的ctype=3时xldate才能开始操作。

2.1、python读取excel中单元格的内容返回的有5种类型。

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error。

一般情况下读取Excel中数字会自动转换为浮点数,若想判断读取为浮点数可以使用如下方法:

ctype == 2 and cell % 1 == 0.0  # ctype为2且为浮点
sheet1.cell_value(x,y)              #返回cell的值

sheet1.cell(x,y).value              #返回cell的值

sheet1.row(x)                       #获取指定行,返回cell对象的列表

sheet1.row_values(x)                #获取指定行,返回列表

sheet1.col(x)                       #获取指定列,返回cell对象的列表

sheet1.col_values(x)                #获取指定列,返回列表

三、实践案例

这有一张表,我们要取F列

import xlrd

excel=xlrd.open_workbook(r'C:\Users\siyu.guan\Desktop\删除节目单20230119.xlsx')
sheet=excel.sheet_by_index(0)
contenct = sheet.col_values(5)
print(type(contenct))
b = 0
for a in range(67):
    id = []
    for i in range(b,b+1000):
        contenct[i] = str(contenct[i])
        if 'jet' in contenct[i] or 'JC' in contenct[i] or 'JSB' in contenct[i]:
            #print(contenct[i]+",",end='')
            id.append(contenct[i])
    id = str(id)
    id = id.replace('[','').replace('\'','').replace(']','')
    print(id)
    with open(f'movieid/test{a}.txt','w') as file:
       file.write(id)
       file.close()
    b = b+1000

大概就是这样

你可能感兴趣的:(python,python,开发语言,linux)