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给文本创立向量空间模型的教程
Apr 23 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
Python安装及Pycharm安装使用教程图解
Sep 20 Python
python读取csv文件指定行的2种方法详解
Feb 13 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
python实现批量移动文件
Apr 05 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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
javascript window对象属性整理
2009/10/24 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
js实现checkbox全选、不选与反选的方法
2015/02/09 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
Python饼状图的绘制实例
2019/01/15 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
Django app配置多个数据库代码实例
2019/12/17 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
美国手机支架公司:PopSockets
2019/11/27 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
介绍一下游标
2012/01/10 面试题
军训生自我鉴定范文
2013/12/27 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
科技活动周标语
2014/10/08 职场文书
2014年秘书工作总结
2014/11/25 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
小学英语复习计划
2015/01/19 职场文书