大蟒操作擅长主要用到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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。