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

作者:xugexuge 时间:2021-02-24 05:06:59 

一.相关说明:

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操作网站的支持!

来源:https://blog.csdn.net/xugexuge/article/details/82628792

标签:python,openpyxl,excel
0
投稿

猜你喜欢

  • python 实现图片上传接口开发 并生成可以访问的图片url

    2021-03-19 01:02:02
  • 解决TensorFlow GPU版出现OOM错误的问题

    2021-09-10 10:27:44
  • 小结下dom节点操作

    2011-03-08 10:33:00
  • Python实战之实现获取动态图表

    2023-10-31 14:03:34
  • bat和python批量重命名文件的实现代码

    2023-10-07 02:11:53
  • python opencv圆、椭圆与任意多边形的绘制实例详解

    2021-12-08 08:20:48
  • 根据Dreamweaver里的ToolTip代码改进的提示框

    2008-11-27 12:19:00
  • sqlserver 多表查询不同数据库服务器上的表

    2012-04-13 11:41:51
  • 详细讲解MySQL数据库对文件操作的封装

    2008-12-17 16:08:00
  • 使用Python来做一个屏幕录制工具的操作代码

    2023-11-02 18:57:40
  • Refactoring HTML 书评

    2008-07-10 12:00:00
  • python3 flask实现文件上传功能

    2022-11-19 18:42:10
  • Flask框架通过Flask_login实现用户登录功能示例

    2021-07-19 07:15:38
  • 通向MySQL神秘王国的图形化之路

    2008-12-08 13:43:00
  • python 实现汉诺塔游戏

    2021-06-28 10:47:51
  • 帮助你分析MySQL的数据类型以及建库策略

    2009-02-23 17:39:00
  • 详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系

    2021-01-09 10:40:27
  • 利用SQL语句对不同数据库进行高效果分页

    2008-11-28 14:44:00
  • python清除字符串中间空格的实例讲解

    2023-12-29 22:40:24
  • Python的collections模块中namedtuple结构使用示例

    2022-06-01 19:59:42
  • asp之家 网络编程 m.aspxhome.com