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 random模块(获取随机数)常用方法和使用例子
May 13 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
windows下python安装pip图文教程
May 25 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
如何通过python画loss曲线的方法
Jun 26 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
弄清Pytorch显存的分配机制
Dec 10 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php生成图片验证码
2015/06/09 PHP
php简单判断文本编码的方法
2015/07/30 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
python读写文件操作示例程序
2013/12/02 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
学生信息管理系统python版
2018/10/17 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
python实现银行实战系统
2020/02/26 Python
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
一组SQL面试题
2016/02/15 面试题
怎样声明一个匿名的内部类
2016/06/01 面试题
天坛导游词
2015/02/02 职场文书
2015年材料员工作总结
2015/04/30 职场文书
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技
windows server2008 开启端口的实现方法
2022/06/25 Servers