python3结合openpyxl库实现excel操作的实例代码


Posted in Python onSeptember 11, 2018

一.相关说明:

1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结尾的文件,需要使用 xlrd和xlwt库进行操作
2、excel表的文字编码如果是“gb2312” 读取后就会显示乱码,请先转成Unicode

3、workbook: 工作簿,一个excel文件包含多个sheet。

4、sheet:工作表,一个workbook有多个,表名识别,如“sheet1”,“sheet2”等。

5、cell: 单元格,存储数据对象

二.openpyxl的使用方法

1. 新建

import openpyxl
# 新建一个空excel,表名为sheet,文件名为test
wb = openpyxl.Workbook() # 创建新的excel文件,一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)
wb.save('test.xlsx')

2.表操作

注:从此操作往后都使用如下的测试数据

import openpyxl
import openpyxl.styles
# 打开已有的excel
wb = openpyxl.load_workbook("test.xlsx")
# ------------------ 表操作 ------------------
# 新建sheet表
wb.create_sheet(index=2, title="sheet3") # 可通过index控制创建的表的位置
# 获取所有表名
sheet_names = wb.sheetnames # 得到工作簿的所有工作表名 结果: ['Sheet1', 'Sheet2', 'Sheet3']
# 根据表名删除sheet表
wb.remove(wb[sheet_names[2]]) # 删除上一步建的第3个工作表
# 根据表名打开sheet表
sheet1 = wb[sheet_names[0]] # 打开第一个 sheet 工作表

3.读取数据

# ------------------ 读取数据 ------------------
# 获取单元格数据
sheet1_max_colum = sheet1.max_column # 获取最大列数 结果:3
# ws = wb.active # 获取当前活动的sheet页
sheet1_max_row = sheet1.max_row # 获取最大行数 结果:10
A1_value = sheet1['A1'].value # 获取单元格A1值 结果:a1
A1_column = sheet1['A1'].column # 获取单元格A1列值 结果: A
A1_row = sheet1['A1'].row  # 获取单元格A1行号 结果: 1
A1 = sheet1.cell(row=1, column=1).value # 获取第一行第一列的单元格值 结果:a1
# 获取C列的所有数据
list_sheet1_column_C = []
for i in sheet1["C"]:
  list_sheet1_column_C.append(i.value)
# 获取第1行的所有数据
list_sheet1_row_1 = []
for i in sheet1[1]:
  list_sheet1_row_1.append(i.value)
# 读取所有数据
list_sheet1_all = []
for row in sheet1.rows:
  for cell in row:
    list_sheet1_all.append(cell.value) # 按行循环获取所有的值,保存在 list_sheet1_all 列表中

4.写入数据

# ------------------ 写入数据 ------------------
sheet1.cell(row=1, column=2, value="B1") # 修改第一行第二列的单元格的值为B1
sheet1["A1"] = "A1" # 直接修改A1单元格的值为A1
sheet1["B11"] = "B11" # 新增B11单元格的值为B11
sheet1.title = "test_sheet" # 修改sheet1的表名为test_sheet

5.表格样式调整

# ------------------ 表格样式调整 ------------------
# 表格样式支持:字体、颜色、模式、边框、数字格式等
# A1单元格 等线24号加粗斜体,字体颜色浅蓝色
sheet1["B11"].font = openpyxl.styles.Font(name="宋体", size=24, italic=True, color="00CCFF", bold=True)
# B1单元格 水平上下居中
sheet1["B11"].alignment = openpyxl.styles.Alignment(horizontal="center", vertical="center")
# 第一行高度设置为30
sheet1.row_dimensions[1].height = 30
# C列的宽度设置为35
sheet1.column_dimensions["C"].width = 35

6.保存文件

# 保存文件,注意文件打开时文件保存会出错
wb.save("test.xlsx")

补充:下面通过实例代码看下python3 openpyxl基本操作,具体代码如下所示:

#coding:utf-8
import xlrd
import xlwt
# 读写2007 excel
import openpyxl
import sys
#读取设备sn
# def readSN(path):
#   wb = openpyxl.load_workbook(path)
#   sheet = wb.active
#   dict = []
#   for i in range(2, sheet.max_row +1):
#     c = sheet["C" + str(i)].value;
#     d = sheet["D" + str(i)].value;
#
#     dict.append(d)
#     #dict.append(d)
#     #print(c,d)
#   return dict;
#
#   pass;
# print(readSN("./sim/1.xlsx"))
def read07Excel(path,path1):
  wb = openpyxl.load_workbook(path)
  sheet = wb.active
  # print(sheet.max_column) # 获取最大列数
  # print(sheet.max_row) # 获取最大行数
  #print(sheet['B1'].value)
  wb1 = openpyxl.load_workbook(path1)
  sheet1 = wb1.active
  for i in range(2,sheet.max_row):
    iccid = sheet["B"+str(i)].value;
    len_iccid = len(iccid)
    if len_iccid == 20 :
      sub_iccid = iccid[16:-1]
    elif len_iccid == 21:
      sub_iccid = iccid[17:-1]
    for x in range(1,sheet1.max_row):
      #print(sheet1["D"+str(x)].value)
      if sub_iccid+"N" == sheet1["D"+str(x)].value:
        sheet["O"+str(i)].value = sheet1["C"+str(x)].value;
        wb.save(filename=path)
        print(str(sheet1["D"+str(x)].value) + " "+ str(sheet1["C"+str(x)].value) +" "+ str(iccid))
        print()
      pass
    # 写入数据
    # s =sheet["P"+str(i)].value = "dsdaf";
    # wb.save(filename=path)
    # p = sheet["P" + str(i)].value;
    #print(sub_iccid)
  # for row in sheet.rows:
  #   for cell in row:
  #     print(cell.value, "\t", end="")
  #     print(cell.column, "\t", end="")
  #
  #
  #   print()
  #   sys.exit()
# path = "./sim/2.xlsx"
# wb = openpyxl.load_workbook(path)
# #sheet = wb.sheetnames[0] #获取名称
# sheet = wb.active
# 分别返回
#print(sheet['A1'].value) #获取单元格A1值
read07Excel("./sim/2.xlsx","./sim/1.xlsx")
# wb=openpyxl.load_workbook('./sim/1.xlsx') #打开excel文件
# print(wb.sheetnames) #获取工作簿所有工作表名

总结

以上所述是小编给大家介绍的python3结合openpyxl库实现excel操作,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
跟老齐学Python之用while来循环
Oct 02 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
Python实现调度算法代码详解
Dec 01 Python
python多线程并发实例及其优化
Jun 27 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
Sep 16 Python
python 字段拆分详解
Dec 17 Python
python+Selenium自动化测试——输入,点击操作
Mar 06 Python
python实现3D地图可视化
Mar 25 Python
基于django和dropzone.js实现上传文件
Nov 24 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
python 单机五子棋对战游戏
Apr 28 Python
python创建文件备份的脚本
Sep 11 #Python
python实现飞机大战
Sep 11 #Python
pygame实现简易飞机大战
Sep 11 #Python
python实现飞机大战微信小游戏
Mar 21 #Python
python实现微信小程序自动回复
Sep 10 #Python
python中map的基本用法示例
Sep 10 #Python
python2 与 pyhton3的输入语句写法小结
Sep 10 #Python
You might like
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
2018/10/12 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
jquery插件制作简单示例说明
2012/02/03 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
python递归全排列实现方法
2018/08/18 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
感恩母亲节活动方案
2014/03/04 职场文书
技术总监管理职责范本
2014/03/06 职场文书
物理教育专业求职信
2014/06/25 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
2014年电厂工作总结
2014/12/04 职场文书
新教师个人工作总结
2015/02/06 职场文书
停电放假通知
2015/04/14 职场文书
盗窃罪辩护词范文
2015/05/21 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
简单聊聊Golang中defer预计算参数
2022/03/25 Golang