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中的包和模块实例
Nov 22 Python
使用简单工厂模式来进行Python的设计模式编程
Mar 01 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
使用python实现接口的方法
Jul 07 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
python 移除字符串尾部的数字方法
Jul 17 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
python实现微信小程序用户登录、模板推送
Aug 28 Python
Django框架 querySet功能解析
Sep 04 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
对联广告js flash激活
2006/10/19 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
chrome调试javascript详解
2015/10/21 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
Django的CVB实例详解
2020/02/10 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
软件测试工程师面试问题精选
2016/10/28 面试题
机械个人求职信范文
2014/01/24 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
年会主持词结束语
2014/03/27 职场文书
社区居务公开实施方案
2014/03/27 职场文书
保险专业求职信
2014/07/07 职场文书
中小企业员工手册范本
2015/05/14 职场文书
redis复制有可能碰到的问题汇总
2022/04/03 Redis