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引用模块和查找模块路径
Mar 17 Python
查看django执行的sql语句及消耗时间的两种方法
May 29 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
tensorflow如何批量读取图片
Aug 29 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
python列表的逆序遍历实现
Apr 20 Python
如何通过python实现IOU计算代码实例
Nov 02 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
python中K-means算法基础知识点
Jan 25 Python
python分分钟绘制精美地图海报
Feb 15 Python
Python+Matplotlib+LaTeX玩转数学公式
Feb 24 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&java(二)
2006/10/09 PHP
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
Php注入点构造代码
2008/06/14 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
php中如何执行linux命令详解
2018/11/06 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
Yii框架ACF(accessController)简单权限控制操作示例
2019/04/26 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
laravel model 两表联查示例
2019/10/24 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
详解Document.Cookie
2015/12/25 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
Nodejs中使用puppeteer控制浏览器中视频播放功能
2019/08/26 NodeJs
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python实现两个list对应元素相减操作示例
2017/06/09 Python
关于Python数据结构中字典的心得
2017/12/04 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
新年爱情寄语
2014/04/08 职场文书
大学应届毕业生求职信
2014/05/24 职场文书
庆祝儿童节标语
2014/10/09 职场文书
导游词之安徽九华山
2019/09/18 职场文书