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使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
Jun 29 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Django 实现购物车功能的示例代码
Oct 08 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
python list转置和前后反转的例子
Aug 26 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
Mar 20 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 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 ADODB使用方法集锦
2008/03/25 PHP
PHP print类函数使用总结
2010/06/25 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
php判断变量类型常用方法
2012/04/24 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
JavaScript Accessor实现说明
2010/12/06 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
pygame学习笔记(6):完成一个简单的游戏
2015/04/15 Python
如何将python中的List转化成dictionary
2016/08/15 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
BIBLOO波兰:捷克的一家在线服装店
2018/03/09 全球购物
感恩节活动策划方案
2014/05/16 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
SQL语句中JOIN的用法场景分析
2021/07/25 SQL Server
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers