Python | openpyxl模块-Excel读写操作

Python操作Excel文件有三种方法

  • 第三方库 xlwt/xlrd:用于生成和读取比较老的excel文件,比如xls格式,最大行数限制为65536行。其中xlrd是读excel,xlwt是写excel的库。
  • 第三方库 openpyxl:用于生成2010之后新的excel文件,比如xlsx格式,最大行数限制为1048576行
  • 第三方库 pandas:pandas是最强大的数据分析库,自带excel读取和生成模块

 

本文主要介绍openpyxl模块

一、前言 

写入基本操作步骤:

  • 1.获取workbook
  • 2.获取 worksheet
  • 3.再然后获取单元格,进行操作
  • 4.保存文件

  注:写入和读取单元格有两种基本方法:使用工作表的键(例如 A1 或 D3),或通过cell()方法使用行和列表示法。

 附加:from openpyxl import Workbook 或者 from openpyxl import load_workbook 区别

    前者不需要有excle文件存在,可以产生一个;后者需要传入一个excel文件,不能自动产生一个。

 

二、保存xlsx - 新建文件

import openpyxl

# 创建workbook对象
wb = openpyxl.Workbook()
# 删除默认创建的一个sheet页
ws = wb['Sheet']
wb.remove(ws)
# 给sheet页命名
sheetName = "工作表1"
# 创建sheet页
ws = wb.create_sheet(sheetName)

# 写入方式1:(行、列、值)
ws.cell(row=1, column=1, value="python")
ws.cell(row=2, column=1).value = "java"
ws.cell(row=3, column=1).value = 2
ws['A4'].value = 3

# 写入方式2:append方法
row = ["A11","A12","A13"]
# 向工作表中 按行添加数据
ws.append(row)

# 写入方式3:批量写入,for循环方法
link_nums = 100
for i in range(2,link_nums):
    ws['A'+str(i)] = "WZ202207FF"+str(i)
    ws['B'+str(i)] = "147258369"
    ws['C'+str(i)] = "DDYY"

# filePath 是指保存的 excel 文件路径
filePath = "新工作簿.xlsx"
# 保存xlsx
wb.save(filePath)

 

 三、读取xlsx

import openpyxl

# fileName 这里是指文件路径
fileName = "sn_test1_500.xlsx"
# 使用load_workbook()方法,以只读模式打开工作簿  #指定read_only=True方式,按列读取会失败
wb = openpyxl.load_workbook(filename = fileName,read_only = True)
# sheetName 就是 sheet页的名称
sheetName = "Sheet"
# 通过 工作表名 获取 工作表
ws = wb[sheetName]

# 读取方式1:指定读取 A1、A2和A3单元的内容方法
a1 = ws['A1'].value
a2 = ws['A2']
a3 = ws.cell(row=3, column=1).value
print(a1)
print(a2.value)
print(a3)

# 读取方式2:用循环读取指定的部分内容['A1,C3'],如:['A,C']-A到C列的全部内容
for row in ws['A1:C3']:
    for cell in row:
        print(cell.value)

# 读取方式3:
# 按行读取 工作表的全部内容
for row in ws.rows:
    for cell in row:
        print(cell.value)
# 按列读取 工作表的全部内容
for column in ws.columns:
    for cell in column:
        print(cell.value)

 

 

其他相关操作:

 

关键代码相关描述
cell(row, column, value) 写入数据,三个参数分别是行,列,值
cell(row, column).value 获取指定单元格的值,两个参数分别是行,列
workbook.remove('表单名') 删除表单
del workbook['表单名'] 删除表单
workbook.save('文件名') 保存工作簿
sheet.max_row 获取表单数据的总行数
sheet.max_column 获取表单数据的总列数
sheet.rows 获取按行所有的数据
sheet.columns 获取按列所有的数据
 

 

 

 

参考:

https://blog.csdn.net/xiao_luo_hao/article/details/114627172

https://blog.csdn.net/qq_38830593/article/details/102870762

posted @ 2022-07-16 16:15  卷毛七号  阅读(913)  评论(0编辑  收藏  举报