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和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python抓取手机号归属地信息示例代码
Nov 28 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
python实现彩票系统
Jun 28 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 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
星际争霸任务指南——虫族
2020/03/04 星际争霸
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
Angularjs基础知识及示例汇总
2015/01/22 Javascript
javaScript中Math()函数注意事项
2015/06/18 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
python生成随机图形验证码详解
2017/11/08 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
利用Python实现kNN算法的代码
2019/08/16 Python
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
总监职责范文
2013/11/09 职场文书
2014年工人工作总结
2014/11/25 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
利用Java连接Hadoop进行编程
2022/06/28 Java/Android