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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 Python
解决python爬虫中有中文的url问题
May 11 Python
python将list转为matrix的方法
Dec 12 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
python异步编程 使用yield from过程解析
Sep 25 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
Python select及selectors模块概念用法详解
Jun 22 Python
python批量修改文件名的示例
Sep 27 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
python数据处理之Pandas类型转换
Apr 28 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
PHP parse_url 一个好用的函数
2009/10/03 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
2010/06/05 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
JS中实现浅拷贝和深拷贝的代码详解
2019/06/05 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
使用PyCharm配合部署Python的Django框架的配置纪实
2015/11/19 Python
Python与R语言的简要对比
2017/11/14 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Python调用Redis的示例代码
2020/11/24 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
2021/01/06 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
Python使用openpyxl复制整张sheet
2021/03/24 Python
高中自我评价范文
2014/01/27 职场文书
《手指教学》反思
2014/02/14 职场文书
工程承包协议书
2014/04/22 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书