Python-openpyxl表格读取写入的案例详解


Posted in Python onNovember 02, 2020

1.为何选择openpyxl模块

xlxd、xlwt、?只能读取,openpyxl、可以读取写入

2.安装

pip install -i https://pypi.douban.com/simple openpyxl==2.6.2

3.处理对象

openpyxl只能处理xlsx格式的excel文件,只能使用办公软件来创建xlsx格式的excel文件,不能使用pycharm来创建
excel对象 -> sheet表单对象 -> cell单元格对象 -> 行和列、值属性
如果excel文件不存在,那么会FileNotFoundError
res = load_workbook(“testcase11.xlsx”)

4.代码案例

from openpyxl import load_workbook
# load_workbook,往往对已存在的excel进行读写操作
class Handle_excel:

  def __init__(self,filename,sheetname = None):
    self.filename = filename
    self.sheetname = sheetname
    
  def read_data(self):
    """
    读取表格数据
    :return:
    """
    wb = load_workbook(self.filename)
    if self.sheetname is None:
      ws = wb.active # active默认读取第一个表单
    else:
      ws = wb[self.sheetname]  # 读取指定表单

    testcase_list = [] # 所有数据信息
    header_list = []  # 表头信息
    for row in range(1,ws.max_row+1):
      one_row_dict = {}  # 每一行数据信息
      for column in range(1,ws.max_column+1):
        one_cell_value = ws.cell(row,column).value # cell方法,获取单元格,返回Cell对象
        if row == 1:
          header_list.append(one_cell_value)
        else:
          key = header_list[column-1]
          one_row_dict[key] = one_cell_value
      if row != 1:
        testcase_list.append(one_row_dict)

    return testcase_list

  def write_data(self, row, column, data):
    """
    写操作
    :param row: 指定在某一行写
    :param column: 指定在某一列写
    :param data: 待写入的数据
    :return:
    """
    # 将数据写入到excel中,不能与读取操作公用一个Workbook对象
    # 如果使用同一个Workbook对象,只能将最后一次写入成功,会出现意想不到的结果
    wb = load_workbook(self.filename)
    if self.sheetname is None:
      ws = wb.active
    else:
      ws = wb[self.sheetname]

    # 第一种写入方式:
    # one_cell = ws.cell(row, column)
    # one_cell.value = data

    # 第二种写入方式:
    ws.cell(row, column, value=data)

    # c.PermissionError: [Errno 13] Permission denied: 'testcase.xlsx'
    # 对exel文件修改之后,要保存,一定要将excel文件关闭
    wb.save(self.filename)


if __name__ == "__main__":
  excel_name =“testcase.xlsx"
  sheet_name = "login"
  do_excel = Handle_excel(excel_name,sheet_name)
  print(do_excel.read_data())
  #do_excel.write_data(3,4,5)

到此这篇关于Python-openpyxl表格读取写入的案例详解的文章就介绍到这了,更多相关Python表格读取写入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python转码问题的解决方法
Oct 07 Python
python基础教程之python消息摘要算法使用示例
Feb 10 Python
python提取内容关键词的方法
Mar 16 Python
python实现对一个完整url进行分割的方法
Apr 29 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python+Wordpress制作小说站
Apr 14 Python
用Python实现随机森林算法的示例
Aug 24 Python
Python实现简易版的Web服务器(推荐)
Jan 29 Python
python+splinter自动刷新抢票功能
Sep 25 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
Python常用扩展插件使用教程解析
Nov 02 #Python
python实现三壶谜题的示例详解
Nov 02 #Python
python 实现批量图片识别并翻译
Nov 02 #Python
基于python实现百度语音识别和图灵对话
Nov 02 #Python
用python进行视频剪辑
Nov 02 #Python
如何通过python实现IOU计算代码实例
Nov 02 #Python
Opencv常见图像格式Data Type及代码实例
Nov 02 #Python
You might like
php中使用临时表查询数据的一个例子
2013/02/03 PHP
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python搭建简易服务器分析与实现
2012/12/15 Python
Python常用模块介绍
2014/11/21 Python
python动态性强类型用法实例
2015/05/09 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python numpy库np.percentile用法说明
2020/06/08 Python
Python如何读写字节数据
2020/08/05 Python
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
幼儿园新学期寄语
2014/01/18 职场文书
最经典的大学生职业生涯规划范文
2014/03/05 职场文书
新员工考核评语
2014/12/31 职场文书
幼师求职自荐信
2015/03/26 职场文书
交通事故案件代理词
2015/05/23 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android