zoukankan      html  css  js  c++  java
  • python应用(九、python操作excel文件:openpyxl)

    9.python操作excel文件:openpyxl
    参考网站:https://www.bilibili.com/video/BV1ys411g7mY?p=24

    9.1 知识点:
    1)数据定义:
    工作簿(excel文件):workbook
    工作表:worksheet
    行:row
    列:column
    单元格:cell

    2)openpyxl中Excel文件三个对象:
    workbook: 工作簿,一个excel文件包含多个sheet。
    sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。
    cell: 单元格,存储数据对象
    openpyxl就是围绕着这三个概念进行的,不管读写都是“三板斧”:
    打开Workbook,定位Sheet,操作Cell。

    3)xlrd和xlwt模块(不支持最新版的excel):
    xlrd(读取):xlrd 可以在任意平台上读取的excel为:.xls以及.xlsx;
    xlwt(写入):xlwt支持的excel版本是: Microsoft excel版本 95—2003,也就是 xls文件。
    注意:openpyxl中工作表的行数和列数都是从1开始,不是从0开始

    9.2 安装相关模块并准备数据
    1)安装模块
    pip install openpyxl # 安装openpyxl模块
    2)数据准备

    9.3 操作工作簿(excel文件)
    1)新建工作簿:wb = openpyxl.Workbook()
    新建的工作簿只有一张工作表,表名是"sheet"。
    2)打开文件,并赋值:wb = openpyxl.load_workbook("销售数据.xlsx")
    3)将工作簿保存到文件:wb.save("销售数据11.xlsx")
    保存打开的文件时,最好更换文件名,防止覆盖源文件,导致数据丢失。
    4)代码:

    9.4 操作工作表(sheet)
    1)新建工作表:
    (1)新建自定义工作表:wb.create_sheet(title="工作表名", index=数字)
    index从0开始,0在最前面。
    (2)如果新建默认工作表:wb.create_sheet()
    默认使用"Sheet"加数字命名,位置在所有工作表最后。
    (3)新建表单时,也可以只输入表单名:wb.create_sheet("工作表名")

    2)获取工作表对象
    (1)循环遍历所有工作簿中所有工作表对象:for sheet in 工作簿:
    (2)获取激活工作表对象:工作簿对象.active
    (3)获取指定工作表对象:工作簿对象[“工作表名称”]

    3)获取工作表名称
    (1)工作簿对象.sheetnames:所有工作表名称列表
    (2)工作表对象.title:工作表名称

    4)修改工作表的名称
    工作表对象.title = “新名称”

    5)复制工作表
    工作簿对象.copy_worksheet(被复制工作表对象)
    执行完copy_worksheet,会自动给新工作表命名“原工作表 Copy”

    6)获取工作表行数和列数
    工作表对象.max_row # 获取当前工作表的列数
    工作表对象.max_column # 获取当前工作表的列数

    7)删除工作表
    工作簿对象.remove(表单对象)

    9.5 操作单元格(cell)
    1)获取单元格对象
    (1)根据坐标获取单元格对象
    (2)根据行数和列数获取单元格,行数和列数的取值从1开始,不是从0开始

    2)获取单元格的值、行数、列数、坐标
    单元格的值:单元格对象.value
    单元格的行数:单元格对象.row
    单元格的列数:单元格对象.column
    单元格的坐标:单元格对象.coordinate

    3)通过循环操作行或列

    4)单元格赋值
    (1)使用"="赋值
    ws["A1"] = "Hello Python"
    ws["A2"].value = "你好"
    ws.cell(row=3, column=1).value = "Hello World"


    (2)使用append整行追加赋值



    (3)使用value传参赋值

    9.6 操作行和列
    openpyxl没有行对象和列对象,行和列的操作本质上是操作多个单元格对象
    1)追加整行数据
    工作表对象.append(列表、元组)

    2)获取行数据
    工作表对象[行号]:得到某行所有单元格对象,组成的元组

    循环获取多行数据

    3)获取列数据
    工作表对象["列"]:得到某列所有单元格对象,组成的元组

    循环获取多列数据

    4)按行或按列输出所有单元格对象
    工作表.rows是一个生成器,里面是每一行的数据,一行数据是一个元组,元组由每行所有单元格对象组成
    工作表.columns是一个生成器,里面是每一列的数据,一列数据是一个元组,元组由每列所有单元格对象组成
    rows和columns的用法基本相同,下面以rows为例讲解它们的用法

    使用循环迭代取值

    5)列数转化:字母转数字或数字转字母
    get_column_letter:数字转化成字母
    column_index_from_string:字母转化成数字

    6)删除行和删除列
    工作表对象.delete_rows(行数)
    工作表对象.delete_cols(列数)

    9.7 练习一:修改excel数据
    1)需求:Produce.xlsx中保存了产品的名称和单价,根据字典修改excel文件中的产品价格。

    2)代码:

    9.8 练习二:将excel文件转换成字典
    1)需求:
    将excel中的数据整理成字典,字典格式如下:
    {所属部门1: {区域(省份)1: {当前区域人数: x, 当前区域销售总额: x, 当前区域人员列表: []},
    区域(省份)2: {当前区域人数: x, 当前区域销售总额: x, 当前区域人员列表: []},
    …}
    所属部门2: {区域(省份)1: {当前区域人数: x, 当前区域销售总额: x, 当前区域人员列表: []},
    区域(省份)2: {当前区域人数: x, 当前区域销售总额: x, 当前区域人员列表: []},
    …}

    }

    2)代码:


    3)其它文件中的代码,使用生成的数据文件:

    9.9 修改单元格格式和新建图表
    1)openpyxl提供了单元格格式模块:styles。
    2)openpyxl提供了图表模块:char。
    单元格格式和图表,不涉及到数据处理,而且在excel中操作更简单方便,此处不再讲述,如有需要可以查询相关资料。

  • 相关阅读:
    .NET中栈和堆的比较 #1
    Asp Interview Questions and Answers
    c#缓存介绍(转)
    [转]Post和Get的区别(兼谈页面间传值的方式)
    .NET垃圾回收机制 转
    zoj 3008 3010
    zoj 2912 Average distance
    TinyMCE,强大的网页编辑器插件
    zoj 3587 Marlon's String
    SOJ和FOJ的比赛
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14304284.html
Copyright © 2011-2022 走看看