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 相关文章推荐
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
Python3实现的简单工资管理系统示例
Mar 12 Python
python实现支付宝转账接口
May 07 Python
python3调用windows dos命令的例子
Aug 14 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
浅析Python 责任链设计模式
Sep 11 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
python上下文管理器异常问题解决方法
Feb 07 Python
Python实战之用tkinter库做一个鼠标模拟点击器
Apr 27 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关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
php 浮点数比较方法详解
2017/05/05 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHP生成指定范围内的N个不重复的随机数
2019/03/18 PHP
php基于 swoole 实现的异步处理任务功能示例
2019/08/13 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
python绘制条形图方法代码详解
2017/12/19 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
用python计算文件的MD5值
2020/12/23 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
MySQL面试题目集锦
2016/04/14 面试题
欢送退休感言
2014/02/08 职场文书
机械系毕业生求职信
2014/05/28 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
个人优缺点总结
2015/02/28 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python