Python openpyxl模块简单介绍

文章目录

  • openpyxl
  • 创建文件
  • Workbook() —创建 excel 文件
  • Workbook.create_sheet() —创建 excel 工作簿
  • Worksheet.title —给工作簿重命名
  • ws.sheet_properties.tabColor = " " 修改标题背景
  • Workbook.sheetname —查看 excel 所有工作簿
  • Workbook.copy_worksheet() —创建工作表的副本
  • 获取修改数据
  • 访问一个单元格
  • Worksheet[ ]
  • Worksheet.cell()
  • Worksheet.append()
  • 公式
  • 访问多个单元格
  • 可以使用切片访问单元格范围
  • Worksheet.values —获取单元格值
  • 保存文件
  • 打开文件
  • openpyxl.load_workbook() —读取 excel 文件
  • 读取工作簿数据
  • openpyxl

    openpyxl模块属于第三方模块,是一个在 python 中能够处理 excel 文件的模块,还有比较出名的是xlrd、xlwt 分别控制excel文件的读写,这俩个能够兼容所有版本的文件。openpyxl 针对 excel 2003版本之前的兼容性可能不好 但是功能更加强大。

    excel文件的版本及后缀
    	2003版本之前 excel的文件后缀是xls
    	2003版本之后 excel的文件后缀是xlsx、csv
    

    创建文件

    Workbook() —创建 excel 文件

    使用 openpyxl 创建文件。只需导入Workbook类

    from openpyxl import Workbook
    wb = Workbook()
    # 一个 excel 文件创建成功
    

    Workbook.create_sheet() —创建 excel 工作簿

    Workbook.create_sheet() 可以创建自定义名称的工作簿。括号里的参数是工作簿名称,还有一个参数是工作簿的位置,也可以不写

    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)  # 创建了一个用户信息表并放在第一位,如下图
    


    Sheet 工作簿是自动生成的

    可以创建多个工作簿,并且它们按顺序排列。
    

    Worksheet.title —给工作簿重命名

    使用 Worksheet.title属性更改表名称

    from openpyxl import Workbook
    
    wb = Workbook()  # 创建 excel 文件
    ws1 = wb.create_sheet('用户信息表', 0)  # 创建工作簿用户信息表放在第一位
    ws2 = wb.create_sheet('bank_info')  # 创建工作簿bank_info
    ws1.title = 'user_info'  # 更改工作簿用户信息表的名称
    '''用代码保存一下后,如下图所示'''
    


    用户信息表 被改名成 user_info

    ws.sheet_properties.tabColor = " " 修改标题背景

    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)
    ws1.sheet_properties.tabColor = 'FF6666'  # 将标题背景改为指定RRGGBB颜色代码
    '''用代码保存一下后,如下图所示'''
    


    变得更好看了…

    Workbook.sheetname —查看 excel 所有工作簿

    返回包含 excel 文件下所有工作簿名称的列表

    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)
    print(wb.sheetnames)
    
    打印结果 ['用户信息表', 'Sheet']
    

    Workbook.copy_worksheet() —创建工作表的副本

    Workbook.copy_worksheet()方法可以在单个工作簿中创建工作表的副本。 仅复制单元格(包括值、样式、超链接和注释)和某些工作表属性(包括尺寸、格式和属性)。不会复制所有其他工作簿/工作表属性 – 例如图像、图表。

    获取修改数据

    访问一个单元格

    在 excel 中可以通过位置找到里面的内容,同样使用代码也能通过位置找到内容。

    Worksheet[ ]
    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)
    ws1['A1'] = 'XWenXiang'  # ws1['A1'] 代表的是该表中的 A1 位置,我们可以将数据直接赋值给它
    '''用代码保存一下后,如下图所示'''
    


    此时的 A1 被填入内容 XWenXiang

    Worksheet.cell()
    ----'除了直接获取位置还可以使用 Worksheet.cell()方法'-----
     
    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)
    ws1.cell(row=4, column=2, value=10)  
    
    此方法是通过指定坐标的方式赋值,其中 row 参数代表行数, column 代表列数,value 是填入的数据。
    '''用代码保存一下后,如下图所示'''
    


    在第2列第4行的位置填入数字10

    Worksheet.append()

    Worksheet.append() 可以同时写入多个数据。

    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)
    ws1.append(['name', 'age', 'gender'])
    ws1.append(['XWenXiang', '15', 'man'])  # 要用 [] 括起来
    '''用代码保存一下后,如下图所示'''
    


    批量写入数据,重复数据还可以加一个循环写入。

    公式

    模块里使用的公式和 excel 中的公式是一样的

    ws1['A6'] = '=sum(A4:A5)'  # 对A4和A5进行求和并写入到A6
    

    访问多个单元格

    可以使用切片访问单元格范围
    x = ws['A1':'C2']
    x1 = ws['C']
    x2 = ws['C:D']
    x3 = ws[10]
    x4 = ws[5:10]
    
    Worksheet.values —获取单元格值
    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet('用户信息表', 0)
    ws1.append(['name', 'age', 'gender'])
    ws1.append(['XWenXiang', '15', 'man'])
    
    for row in ws1.values:
        print(row)
    
    打印结果:
    ('name', 'age', 'gender')
    ('XWenXiang', '15', 'man')
    

    保存文件

    保存工作簿最简单、最安全的方法是使用 对象的 Workbook.save() 方法 Workbook。
    在前面的代码示例都没有将保存代码加入。

    wb = Workbook()
    wb.save('balances.xlsx')  # balances.xlsx 是保存的路径,也就是文件名。
    编辑完要保存才行。
    

    打开文件

    openpyxl.load_workbook() —读取 excel 文件

    和 Workbook 写入一样,使用 openpyxl.load_workbook() 可以打开现有工作簿。

    from openpyxl import load_workbook  # 导入 load_workbook 
    wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)  # ex_a.xlsx是文件名
    print(wb.sheetnames)  # 打印所有工作簿的名称
    
    读取工作簿数据
    方式一
    	from openpyxl import load_workbook
    	
    	wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
    	ws = wb['用户信息表']  # 拿到工作薄对象
    	print(ws['A1'].value)  # 取出工作薄对象中 A1 位置的值
    
    
    方式二
    	from openpyxl import load_workbook
    	
    	wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
    	ws = wb['用户信息表']
    	print(ws.cell(row=2, column=1).value)  # 通过行与列的形式来取值
    	
    
    方式三(逐行读取)
    	from openpyxl import load_workbook
    	
    	wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
    	ws = wb['用户信息表']
    	for row in ws.rows:  # 获取每一行的数据
    	    for data in row:  # 获取每一行中单元格的数据
    	        print(data.value)  # 打印单元格的值
    
    

    来源:XWenXiang

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python openpyxl模块简单介绍

    发表评论