,,python实现读取excel表格详解方法

,,python实现读取excel表格详解方法

大蟒操作擅长主要用到xlrd和xlwt两个库,xlrd读取表格数据,支持xlsx和xls格式的擅长表格;xlwt写入擅长表格数据

目录

一、python读取擅长表格数据1、读取擅长表格数据常用操作2、xlrd模块主要操作3、读取单元格内容为日期时间的方式4、读取合并单元格的数据二、python写入擅长表格数据

一、python读取excel表格数据

1、读取excel表格数据常用操作

导入xlrd

# 打开擅长表格

data _ excel=xlrd。open _ workbook('数据/数据集。xlsx’)

# 获取所有表名称

names=data_excel.sheet_names()

# 获取书中的表工作表的三种方法,返回一个xlrd.sheet.Sheet()对象

table=data_excel.sheets()[0] #通过索引顺序获取表

table=data _ excel。sheet _ by _ index(sheetx=0)#通过索引顺序获取表

table=data _ excel。工作表名称(工作表名称='工作表1 ')#通过名称获取

# excel工作表的行列操作

n_rows=table.nrows #获取该表中的有效行数

n_cols=table.ncols #获取该表中的有效列数

row_list=table.row(rowx=0) #返回某行中所有的单元格对象组成的列表

cols_list=table.col(colx=0) #返回某列中所有的单元格对象组成的列表

# 返回某行中所有单元格的数据组成的列表

row_data=table.row_values(0,start_colx=0,end_colx=None)

# 返回某列中所有单元格的数据组成的列表

cols_data=table.col_values(0,start_rowx=0,end_rowx=None)

row_lenth=table.row_len(0) #返回某行的有效单元格长度

# excel工作表的单元格操作

row_col=table.cell(rowx=0,colx=0) #返回单元格对象

row _ col _ data=表。cell _ value(rowx=0,colx=0) #返回单元格中的数据

2、xlrd模块主要操作

导入xlrd

''' 打开擅长表格'''

workbook=xlrd。open _ workbook(' data。xlsx’)

打印(工作簿)#结果:位于0x000000000291B128的xlrd.book .图书对象

''' 获取所有表名称'''

sheet _ names=工作簿。工作表名称()

打印(工作表名称)#结果:['表1 ','工作表2']

''' 获取所有或某个表对象'''

# 获取所有的表对象

sheets_object=workbook.sheets()

print(sheets_object) #结果:[位于0x0000000002956710的xlrd.sheet.Sheet对象,位于0x0000000002956AC8的xlrd.sheet对象]

# 通过指数获取第一个表对象

工作表1 _对象=工作簿。工作表索引(0)

打印(工作表1 _对象)#结果:xlrd.sheet.Sheet对象位于0x0000000002956710

# 通过名字获取第一个表对象

工作表1 _对象=工作簿。工作表名称(工作表名称='表1')

打印(工作表1 _对象)#结果:xlrd.sheet.Sheet对象位于0x0000000002956710

''' 判断某个表是否已导入'''

# 通过指数判断工作表一是否导入

工作表1 _ is _ load=工作簿。sheet _ loaded(工作表名称或索引=0)

print(sheet1_is_load) #结果:正确

# 通过表名称判断工作表一是否导入

工作表1 _ is _ load=工作簿。sheet _ loaded(工作表名称或索引='表1')

print(sheet1_is_load) #结果:正确

''' 对表对象中的行执行操作'''

# 获取工作表一中的有效行数

nrows=sheet1_object.nrows

打印(名词行)#结果:5

# 获取工作表一中第3行的数据

all _ row _ values=工作表1 _ object。row _ values(rowx=2)

print(all_row_values) #结果:[3.0,' b ',1,' ']

row _ values=sheet 1 _ objectrow _ values(rowx=2,start_colx=1,end_colx=3)

print(row_values) #结果:['b ',1]

# 获取工作表一中第3行的单元对象

row _ object=sheet 1 _ object。行(rowx=2)

打印(row_object) #结果:[number:3.0,text:'b ',bool:1,empty:'']

# 获取工作表一中第3行的单元

row _ slice=sheet 1 _ object。row _ slice(rowx=2)

打印(row_slice) #结果:[number:3.0,text:'b ',bool:1,empty:'']

# 获取工作表一中第3行的单元类型

row _ types=sheet 1 _ objectrow _ types(rowx=2)

打印(行类型)#结果:数组(' B ',[2,1,4,0])

# 获取工作表一中第3行的长度

row _ len=sheet 1 _ object。row _ len(rowx=2)

print(row_len) #结果:4

# 获取工作表一所有行的生成器

rows _ generator=sheet 1 _ object。get _ rows()

print(rows _ generator)# Result:generator object sheet . get _ rows . locales . gene exprat0x 0000000028 D8 ba 0

''对工作表对象''中的列执行操作''

#获取sheet1中有效列的数量

ncols=sheet1_object.ncols

打印(ncols) #结果:4

#获取sheet1中colx=1列的数据

col _ values=sheet 1 _ object . col _ values(colx=1)

print(col _ values)# Result:[' test ',' a ',' b ',' c ',' d']

col _ values 1=sheet 1 _ object . col _ values(1,1,3)

Print(col_values1) # Result: ['a ',' b']

#获取sheet1第2列中的单元格

col _ slice=sheet 1 _ object . col _ slice(colx=1)

print(col _ slice)# Results:[text:' test ',text:' a ',text:' b ',text:' c ',text:' d']

#获取sheet1中第2列的单元格类型

col _ types=sheet 1 _ object . col _ types(colx=1)

Print(col_types) # Result: [1,1,1,1,1]

对工作表对象中的单元格执行操作。

#获取sheet1中行rowx=1列colx=2的单元格对象

cell _ info=sheet 1 _ object . cell(rowx=1,colx=2)

print(cell _ info)# Result:text:' m '

print(type(cell _ info))# Result:class ' xlrd . sheet . cell '

#获取sheet1中行rowx=1、列colx=2的单元格值

cell _ value=sheet 1 _ object . cell _ value(row x=1,colx=2)

Print(cell_value) #结果:m

#获取sheet1中行rowx=1、列colx=2的单元格类型值

cell _ type=sheet 1 _ object . cell _ type(rowx=1,colx=2)

打印(单元格类型)#结果:1

#单元类型ctype:空为0,字符串为1,数字为2,日期为3,布尔值为4,错误为5;

3、读取单元格内容为日期时间的方式

如果单元格内容的类型是date,即当ctype的值为3时,表示该单元格的数据就是date xlrd。xldate _ as _ tuple (xldate,日期模式);如果xldate的数据是日期/时间,则转换为适合datetime的元组,返回值为元组,格式为:(年、月、日、小时、分钟、nearest _ second) xldate:表对象中单元格的数据datemode: date模式

导入xlrd

导入日期时间

''读取工作表对象中的日期'''

workbook=xlrd . open _ workbook(' data . xlsx ')

sheet 2 _ object=workbook . sheet _ by _ name(' sheet 2 ')

# value _ type=sheet 2 _ object . cell(0,1)。ctype

value _ type=sheet 2 _ object . cell _ type(0,1)

Print(value_type) # Result: 3,表示该值是日期

如果value_type==3:

打印(“单元格数据是日期”)

单元格值=sheet2_object.cell_value(1,0)

Print(cell_value) #结果:43567.0

date _ tuple=xlrd . xldate _ as _ tuple(cell _ value,workbook.datemode)

Print(date_tuple) #结果:(2020,4,12,0,0,0)

日期值=日期时间.日期(*日期元组[:3])

Print(date_value) #结果:2020年4月12日

date _ format=date _ value . strftime(' % Y/% m/% d ')

打印(日期格式)#结果:2020年4月12日

4、读取合并单元格的数据

如果表格是xls格式,那么打开工作簿时,要将formatting_info设置为True,然后获取工作表中的合并单元格;如果表格有xlsx格式,打开工作簿时保持formatting_info为默认值False,然后获取工作表中的合并单元格;

SheetObject.merged_cells:获取工作表中合并单元格的信息,返回值为列表;如果sheet对象中没有合并的单元格,则返回值为空列表;列表中每个单元格信息的格式为:(row _ start,row _ end,col _ start,col _ end);Row_start表示合并单元格的起始行;Row_end表示合并单元格的结束行;Col_start表示合并单元格的起始列;Col_end表示合并单元格的结束列;合并单元格的行值范围为[row_start,row_end],包括row_start,但不包括row _ end;合并单元格的列值范围为[col_start,col_end],包括col_start但不包括col _ end;比如:(1,3,4,6):表示1到2行合并,4到5列合并;

读取合并单元格数据只需要merged_cells数据中的row_start和col_start两个索引。

导入xlrd

'''获取合并单元格并读取单元格数据' ' '

#获取xlsx格式的excel文件中的合并单元格

workbook=xlrd . open _ workbook(' data . xlsx ')

sheet 2 _ object=workbook . sheet _ by _ name(' sheet 2 ')

print(sheet 2 _ object . merged _ cells)# Results:[(1,2,0,2),(3,6,0,2)]

#获取excel文件中xls格式的合并单元格

工作手册1=xlrd。open _ workbook(' data。xls ',formatting_info=True)

工作表2 _对象1=工作簿1。工作表名称('工作表2 ')

打印(第2页_对象1。merged _ cells)#结果: [(1, 2, 0, 2), (3, 6, 0, 2)]

# 读取合并单元格数据(仅需"起始行起始列"即可获取数据)

打印(第2页_对象。单元格值(1,0)) #结果:总结一

打印(第2页_对象。单元格值(3,0)) #结果:总结2

# 或使用为循环获取所有的合并单元格数据

对于sheet2 _ object.merged _单元格中的(row_start,row_end,col_start,col_end):

打印(第2页_对象。单元格值(rowx=row _ start,colx=col_start)

二、python写入excel表格数据

1、写入擅长表格数据常用操作和格式设置

导入xlwt

导入日期时间

# 创建一个练习本设置编码

工作簿=xlwt .工作簿(编码='utf-8 ')

# 创建一个工作表

工作表=工作簿。添加工作表('工作表1 ')

#字体样式设置

style=xlwt .XFStyle() #初始化样式

font=xlwt .字体()#为样式创建字体

font.name='Times New Roman '

font.height=20 * 11 #字体大小,11为字号,20为衡量单位

font.bold=True #黑体

font.underline=True #下划线

font.italic=True #斜体字

style.font=font #设定样式

# 数据写入excel,参数对应行,列,值

worksheet.write(0,0,' test_data') #不带样式的写入

worksheet.write(1,0,' test_data ',style) #带字体样式的写入

# 设置单元格宽度

工作表。第0列.宽度=3333

#设置单元格背景颜色

模式=xlwt .模式()

模式。模式=xlwt .图案。实心_图案

pattern.pattern_fore_colour=13

style=xlwt .XFStyle() #创建模式

样式=样式#向样式添加样式

worksheet.write(2,0,颜色,样式)

#给单元格添加边框方法一

边框=xlwt .边框()#创建边框

borders.left=xlwt .边框。虚线#虚线虚线,NO_LINE没有,瘦实线

borders.right=xlwt .边框。虚线#borders.right=1表示实线

borders.top=xlwt .边框。虚线

borders.bottom=xlwt .边框。虚线

borders.left_colour=0x40

borders.right_colour=0x40

borders.top_colour=0x40

borders.bottom_colour=0x40

style=xlwt .XFStyle() #创建样式

style.borders=borders #为样式添加边框

worksheet.write(3,0,' border1 ',样式)

#给单元格添加边框方法二

# 细实线:1,小粗实线:2,细虚线:3,中细虚线:4,大粗实线:5,双线:6,细点虚线:7,大粗虚线:8,细点划线:9,粗点划线:10,细双点划线:11,粗双点划线:12,斜点划线:13

边框=xlwt .边框()

borders.left=1 #设置为细实线

borders.right=1

borders.top=1

边框。底部=1

borders.left_colour=2 #颜色设置为红色

borders.right_colour=2

borders.top_colour=2

borders.bottom_colour=2

style=xlwt .XFStyle() #创建样式

style.borders=borders #为样式添加边框

worksheet.write(4,0,' border2 ',样式)

#输入一个日期到单元格

style=xlwt .XFStyle()

style.num_format_str='M/D/YY' #其他选项:D-嗯-YY,D-嗯,嗯-YY,h:mm,h:mm:ss,h:mm,h:mm:ss,M/D/YY h:mm,mm:ss,[h]:mm:ss,mm:ss

worksheet.write(5,0,datetime.datetime.now(),style)

#单元格添加计算公式

工作表。写(0,1,2) #输出2

工作表。写(0,2,3) #输出3

工作表。写(1,1,xlwt .公式(' B1 * C1 ')#应该输出6' (B1[2] * B2[6])

worksheet.write(1,2,xlwt .公式(' SUM(B1,C1)')#应该输出5' (B1[2] C1[3])

#向单元格添加一个超链接

工作表。写(0,3,xlwt .公式('超链接(' http://www。百度一下。com ';'百度")"))#输出链接到http://www.baidu.com的文本"百度"

#单元格合并

worksheet.write_merge(0,0,4,5,'第一次合并')#合并0行的四到5列

worksheet.write_merge(1,2,4,5,'第二次合并')#合并一和2行的四到5列

#设置单元格内容的对其方式

对齐=xlwt .对齐()##创建对齐

alignment.horz=xlwt .对齐。水平中心

alignment.vert=xlwt .对齐垂直中心

style=xlwt .XFStyle()

style.alignment=alignment #向样式添加对齐方式

worksheet.write(0,6,'对齐',样式)

#保存文件

workbook.save('data_test.xls ')

2.字体颜色和背景颜色对应于索引号字体颜色:font.colour _ index背景颜色:pattern.pattern _ fore _ colour

这篇关于python读取excel表格的详细方法的文章到此为止。有关python excel的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: