python使用openpyxl操作excel表格-python使用openpyxl模块操作excel

python中的openpyxl模块可以操作excel文件。

使用pip安装pip install openpyxl

支持流行的lxml库(如果已安装)。这在创建大文件时特别有用。

为了能够将图像(jpeg,png,bmp等)包含到文件中,需要安装'pillow'库:pip install pillow

1、创建一个excel对象

import openpyxl

wb=openpyxl.Workbook() #创建一个新的空白excel对象

wb=openpyxl.load_workbook('file_name.xlsx') # 打开一个已存在的文件

获取打开的excel对象中所有的工作表(新的空白excel对象默认有一个名称为"Sheet"的工作表):

1>wb.sheetnames:获取所有工作表的名称的列表

2>for sheet in wb:

print(sheet.title)

2、创建新的工作表

wb.create_sheet(title=None, index=None)

title为新创建的工作表名称

index为新的工作表插入的位置,默认插到末尾

3、打开工作表

ws=wb.active #打开第一个工作表对象

ws=wb[titme] #工作表的title可以作为key进行索引

ws=wb.get_sheet_by_name(title) #通过工作表的title打开

获取最大行,最大列

sheet.max_row

sheet.max_column

设置行高和列宽:

ws.row_dimensions[rowx].height = height_num

ws.column_dimensions['C'].width = width_num

合并和拆分单元格:

merge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None)

方法1:ws.merge_cells('A1:C3') #合并一个矩形区域中的单元格

方法2:ws.merge_cells(start_row=None, start_column=None, end_row=None, end_column=None)

由于省略了第一个参数,后面的参数要使用关键字

merge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None)

使用方法同上

改变工作表按钮颜色

ws.sheet_properties.tabColor = "1072BA"

删除工作表

wb.remove(sheet)

del wb[sheet_name]

4、读取或修改单元格

4.1:单一单元格

cl1= ws['B6'] #直接通过索引获取单元格对象

cl2 = ws.cell(rowx, colx, value=None) #通过行和列获取单元格对象,如果提供了value值,则同时更改该单元格值

获取到单元格对象之后通过属性column、row、is_date、font、value、aligment、border等属性获取和修改相关值

设置字体样式:

ws['B6'].font=openpyxl.styles.Font(name='字体名称',size=数字字号, italic=是否斜体, color='16进制颜色', bold=是否加粗)

设置文字对齐方式:

ws['B6'].alignment=openpyxl.styles.Alignment(horizontal="水平对齐",vertical="垂直对齐",text_rotation=旋转角度,wrap_text=是否自动换行)

horizontal可能的值:左对齐left、居中center、右对齐right、分散对齐distributed、跨列居中centerContinuous、两端对齐justify、填充fill、常规general

vertical可能的值:居中center、还可以靠上top、靠下bottom、两端对齐justify、分散对齐distributed

wrap_text参数还可以写成wrapText

设置单元格边框样式:

side1=openpyxl.styles.Side(style="dotted",color="16进制颜色")

side2=openpyxl.styles.Side(style="thin",color="16进制颜色")

style可能的值'double', 'dashed', 'medium', 'dashDot', 'dashDotDot', 'mediumDashed', 'thin', 'thick', 'slantDashDot', 'hair', 'mediumDashDotDot', 'mediumDashDot', 'dotted'

ws['B6'].border = openpyxl.styles.Border(left=side1,right=side1,top=side2,bottom=side2)

4.2:多单元格

cell_list1 = ws['A1':'C2'] #使用类似切片的方式获取所有单元格对象列表

cell_list2 = ws['C'] # 获取C列(第三)列的所有单元格对象列表

cell_list3 = ws['C:E'] # 获取C列到E列(C列、D列、E列)的所有单元格对象列表

cell_list4 = ws[10] #获取第10行的所有单元格对象列表

cell_list5 = ws[5:10] #获取第5行到第10行的所有单元格对象列表

cell_list6 = ws.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None, values_only=False)

返回指定范围的所有单元格对象,返回格式中每行为一个元祖,然后由这些元祖组成列表,min_*不提供默认为1

4.3:获取所有单元格

all_sell1=ws.rows #返回所有单元格对象,返回格式中每行为一个元祖,然后由这些元祖组成列表

all_sell2=ws.columns #返回所有单元格对象,返回格式中每列为一个元祖,然后由这些元祖组成列表

5、保存成文件

wb.save('file_name.xlsx')

其他操作

1、添加一行到当前sheet的最底部

append(['This is A1', 'This is B1', 'This is C1'])

如果是list,将list从头到尾顺序添加

append({'A' : 'This is A1', 'C' : 'This is C1'})

如果是dict,按照相应的键添加相应的键值

2、根据列数字得到字母,根据字母得到列数字

openpyxl.utils.get_column_letter(num)

openpyxl.utils.column_index_from_string(str)

最后编辑:2020-03-04作者:qingheluo

be51fb116a4da7c73e5e89a63655c6bd?s=96&d=mm&r=g

这个作者貌似有点懒,什么都没有留下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值