python 使用 openpyxl 处理 Excel 教程

这篇具有很好参考价值的文章主要介绍了python 使用 openpyxl 处理 Excel 教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

python 操作excel 的库有很多 ,有的库只能读取 xsl 格式,比如 xlrd 库;
有的库只能写 xsl 格式,比如 xlwt 库;
有的只能读写 xslx 格式,比如 openpyxl 库 。

综合各库及 xslx 格式比较常见,所以本文主要讲解 openpyxl 库对 xslx 格式的 excel 操作。

一、安装openpyxl库

pip install openpyxl

二、新建excel及写入单元格

1.创建一个xlsx格式的excel文件并保存

from openpyxl import Workbook

# 创建一个工作表
wb = Workbook()
# 保存为本地excel文件
wb.save("F:\pythonTest\sample.xlsx")

2.保存成流(stream)

例如当使用 Pyramid, Flask 或 Django 等 web 应用程序时,如果想把文件保存成流,可以使用 NamedTemporaryFile( )方法

from tempfile import NamedTemporaryFile
from openpyxl import Workbook

wb = Workbook()
with NamedTemporaryFile() as tmp:
     wb.save(tmp.name)
     tmp.seek(0)
     stream = tmp.read()

3.写入单元格

from openpyxl import Workbook

wb = Workbook()
# 创建第一个sheet
sheet = wb.active

# 方式一 在第1行第1列的单元格写入111
sheet['A1'] = 111
# 方式二 在第1行第1列的单元格写入111
# sheet.cell(row=1, column=1, value=111)
# 方式三 先获取到单元格,再将数据写入value属性
# cell = sheet['A1']
# cell.value = 111

wb.save("F:\pythonTest\sample.xlsx")

下面的简单示例将新建一个 xlsx 文件并在里面新建 3 个 sheet 工作表,每个 sheet 工作表都写上一点数据:

from openpyxl import Workbook

# 初始化
wb = Workbook()

# 创建第一个sheet
sheet = wb.active
# 在第1行第1列的单元格写入111
sheet['A1'] = 111

# 创建一个新的sheet
sheet1 = wb.create_sheet()
# 在这个新的sheet中第2行第2列的单元格写入222
sheet1['B2'] = 222

# 创建一个叫"第3个工作表"的新sheet
sheet3 = wb.create_sheet("第3个工作表")
# 在这个新的sheet中第3行第3列的单元格写入333
sheet3['C3'] = 333

# 保存本地excel文件中
wb.save("F:\pythonTest\sample.xlsx")

openexcel python,python,excel,python,开发语言,openpyxl

三、创建sheet工作表及操作

1.创建新的工作表

一个工作表至少有一个工作表,你可以通过 Workbook.active 来创建第一个sheet

sheet = wb.active

创建新的带有名字的工作表

# 在结尾插入一个叫 "我的sheet1" 的sheet
sheet1 = wb.create_sheet("我的sheet1") 
# 或者在最开始插入一个叫 "我的sheet12" 的sheet
sheet2 = wb.create_sheet("我的sheet12", 0)
# 或者在倒数第二的位置插入一个叫 "我的sheet13" 的sheet
sheet3 = wb.create_sheet("我的sheet13", -1) 

2.删除指定工作表

# 删除名字是 "我的sheet13" 的工作表
wb.remove(wb['3号sheet'])

3.修改sheet工作表的名称

# 在结尾插入一个叫 "我的sheet1" 的工作表
sheet1 = wb.create_sheet("我的sheet1") 
# 将"我的sheet1" 的工作表名字改为"first"
sheet1.title = "first"

4.获取所有工作表的名称

print(wb.sheetnames) #['Sheet', '我的sheet1', 'first', 'second']

5.切换工作表

current = wb["first"]
# 切换到 "second" 工作表
current = wb["second"]

6.遍历所有sheet工作表

for s in wb:
     print(s.title)

7.复制sheet工作表

sheet = wb.active
sheetNew = wb.copy_worksheet(sheet)

四、读取excel和单元格

1.读取 excel 文件

读取 excel 文件并打印所有的 sheet 工作表名称

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
print(wb.sheetnames) # ['Sheet', 'Sheet1', 'New Title']

2.读取单元格

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 获取"New Title" 这个sheet工作表
sheet = wb["第3个工作表"]

# 方式一 获取 "C3"这个单元格
cell = sheet["C3"]
# 方式二 获取 第3行3列 这个单元格
# cell = sheet.cell(row=3, column=3)

# 打印单元格的值
print(cell.value)

3.获取某一行某一列的数据

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample1.xlsx")
sheet = wb["Sheet"]

# 获取第2行的单元格数据并打印
row = sheet['2']
row_data = []
for cell in row:
    row_data.append(cell.value)
print(row_data)

# 获取第3列的单元格数据并打印
col = sheet['C']
col_data = []
for cell in col:
    col_data.append(cell.value)
print(col_data)


4.遍历所有单元格

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 遍历所有的sheet工作表
for sheet in wb:
    # 获取当前sheet工作表的行数据
    rows = tuple(sheet.rows)
    # 遍历每一行
    for row in rows:
        # 遍历每一个单元格
        for cell in row:
            print(cell.value)

上面使用了sheet.rows 获取行数据,如果要获取列数据可以使用 sheet.columns

5.遍历指定行列范围的单元格

方式一:使用切片方式

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 获取叫"Sheet"的工作表
sheet = wb["Sheet"]
# 获取叫'A2'到'C4'范围的所有单元格
rows = sheet['A2':'C4']
for cells in rows:
    for cell in cells:
        print(cell.value, end=" ")
    print()

方式二:使用iter_rows方法

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 获取叫"Sheet"的工作表
sheet = wb["Sheet"]
# 获取 2到4行,1到3列 范围的所有单元格
for row in sheet.iter_rows(min_row=2, min_col=1, max_col=3, max_row=4):
    for cell in row:
        print(cell.value, end=" ")
    print()

五、合并、拆分单元格和插入删除行列

1.合并单元格

合并单元格时,除了左上角的单元格内容,其他都选中范围单元格将从工作表中删除

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 获取叫"Sheet"的工作表
sheet = wb["Sheet"]

# 方式一 合并 A2到C4 范围的单元格
sheet.merge_cells('A2:C4')
# 方式二 合并 2到4行,1到3列 范围的所有单元格
# sheet.merge_cells(start_row=2, start_column=1, end_row=4, end_column=3)

wb.save("F:\pythonTest\sample.xlsx")

openexcel python,python,excel,python,开发语言,openpyxl

2.拆分合并的单元格

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 获取叫"Sheet"的工作表
sheet = wb["Sheet"]

# 方式一 拆分 A2到C4 范围的单元格
sheet.unmerge_cells('A2:C4')
# 方式二 拆分 2到4行,1到3列 范围的所有单元格
ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

wb.save("F:\pythonTest\sample.xlsx")

3.插入行和列

(1)插入单行单列

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
sheet = wb["Sheet"]
# 在第3行前插入一行
sheet.insert_rows(3)
# 在第2列前插入一列
sheet.insert_cols(2)
wb.save("F:\pythonTest\sample.xlsx")

(2)插入多行多列

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
sheet = wb["Sheet"]
# 在第3行前插入四行
sheet.insert_rows(3, 4)
# 在第2列前插入五列
sheet.insert_cols(2, 5)
wb.save("F:\pythonTest\sample.xlsx")

4.删除行和列

(1)删除单行单列

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
sheet = wb["Sheet"]
# 删除第3行
sheet.delete_rows(3)
# 删除第2列
sheet.delete_cols(2)
wb.save("F:\pythonTest\sample.xlsx")

(2)删除多行多列

from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
sheet = wb["Sheet"]
# 从第3行前开始删除四行
sheet.delete_rows(3, 4)
# 从第2列开始删除五列
sheet.delete_cols(2, 5)
wb.save("F:\pythonTest\sample.xlsx")

六、单元格对齐

1. 对齐方式与换行

# horizontal是水平方向,vertical 是垂直方向
Alignment(horizontal="center", vertical="center")
# 默认单元格填满了是不换行的,如果要自动换行可使用 wrap_text=True
Alignment(horizontal="center", vertical="center", wrap_text=True)

horizontal 水平对齐可选值如下

参数值 对齐方式
left 左对齐
center 左右居中
right 右对齐
fill 填满对齐
distributed 分散对齐
centerContinously 连续居中
justify 两端对齐
general 一般对齐

vertical 垂直对齐可选值如下

参数值 对齐方式
top 上对齐
center 左右居中
bottom 下对齐
distributed 分散对齐
justify 两端对齐

2.单元格对齐

from openpyxl import Workbook
from openpyxl.styles import Alignment

wb = Workbook()
sheet = wb.active

# 在第1行第1列的那个单元格写入123546
cell = sheet['A1']
cell.value = 123546
# 将该单元格对齐方式设置为水平和垂直都居中
cell.alignment = Alignment(horizontal="center", vertical="center")

wb.save("F:\pythonTest\sample.xlsx")

3.合并后的单元格设置对齐方式

可以改变左上单元格的对齐方式、边框等属性来改变整个合并单元格的对齐方式、边框等属性。

from openpyxl.styles import Alignment
from openpyxl import load_workbook

wb = load_workbook("F:\pythonTest\sample.xlsx")
# 获取叫"Sheet"的工作表
sheet = wb["Sheet"]

#  合并 A2到C4 范围的单元格
sheet.merge_cells('A2:C4')
# 改变左上单元格的对齐方式来改变合并单元格的对齐方式
cell = sheet['A2']
cell.alignment = Alignment(horizontal="center", vertical="center")

wb.save("F:\pythonTest\sample.xlsx")

七、单元格边框设置

1. 边框线条粗细、颜色设置

(1)你可以对单元格上下左右的边框进行设置虚线和实线

Border(
    left=Side(style='thick'),
    bottom=Side(style='mediumDashed'),
    right=Side(style='thin'),
    top=Side(style='dashed'))

其中thin是细实线,thick是粗实线,dashed是细虚线,mediumDashed是粗虚线.
全部边框线条可选的有如下:

'dashDot','dashDotDot', 'dashed','dotted',
'double','hair', 'medium', 'mediumDashDot', 
'mediumDashDotDot','mediumDashed', 'slantDashDot',
'thick', 'thin'

(2)你还可以使用 color 参数调整单元格上下左右边框的颜色

Border(
    left=Side(style='thick', color='00000000'),
    bottom=Side(style='mediumDashed', color='00000000'),
    right=Side(style='thin', color='00000000'),
    top=Side(style='dashed', color='00000000'))

可取的颜色参考如下:

openexcel python,python,excel,python,开发语言,openpyxl

2.设置单个单元格边框和颜色

from openpyxl import Workbook
from openpyxl.styles import Border, Side

wb = Workbook()
sheet = wb.active

# 在第1行第1列的那个单元格写入123546
cell = sheet['B2']
cell.value = 123546
# 设置该单元格边框和颜色
cell.border = Border(
    left=Side(style='thick', color='00000000'),
    bottom=Side(style='mediumDashed', color='00000000'),
    right=Side(style='thin', color='00000000'),
    top=Side(style='dashed', color='00000000'))

wb.save("F:\pythonTest\sample1.xlsx")

3.设置多个单元格整体边框和颜色

想要整体添加边框,有两种方式:

(1) 先合并单元格再对左上角的单元格进行操作,但往往这些单元格都有不同的数据,难以进行合并。
(2) 遍历所有的单元格,分别赋予属性。这种方法比较适用于为所有的单元格赋予相同的属性。

八、设置单元格背景颜色和文字字体

1.设置单元格背景颜色

from openpyxl import Workbook
from openpyxl.styles import PatternFill

wb = Workbook()
sheet = wb.active

# 在第1行第1列的那个单元格写入123546
cell = sheet['B2']
cell.value = 123546
# 使用fgColor属性16进制颜色填充
cell.fill = PatternFill('solid', fgColor="FF00FF")

wb.save("F:\pythonTest\sample1.xlsx")

2.设置字体、字体的粗细、大小、颜色

from openpyxl import Workbook
from openpyxl.styles import Font

wb = Workbook()
sheet = wb.active

# 在第1行第1列的那个单元格写入123546
cell = sheet['B2']
cell.value = 123546
# 设置字体样式:  字体大小为30, bold加粗,字体颜色 00FFFF 16进制颜色
cell.font = Font(u'微软雅黑', size=30, bold=True, color="00FFFF")

wb.save("F:\pythonTest\sample1.xlsx")

九、设置行高和列宽

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active

# 设置第1行高度为60
sheet.row_dimensions[1].height = 60
# 设置B列宽度为30
sheet.column_dimensions["B"].width = 30

wb.save("F:\pythonTest\sample1.xlsx")

参考:
Tutorial文章来源地址https://www.toymoban.com/news/detail-694249.html

到了这里,关于python 使用 openpyxl 处理 Excel 教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用openpyxl读写excel文件

    需求:读入sample.xlsx中的信息,通过分析其中的身份证号信息,得到每个人的出生日期,性别,年龄,所在省份,星座,属相等等,将结果写入到另一个excel文件中。 首先,要使用openpyxl第三方库需要安装,安装方法如下: 程序一开头为了能使用第三方库,需要先导入 读入

    2024年02月09日
    浏览(36)
  • python使用OpenPyXl库对Excel进行操作

    参考:知乎文章 / OpenPyXL教程 / 博客园 目录 python使用OpenPyXl库对Excel进行操作 1. 基本概念 2. 判断文件是否存在 3. 创建和打开Excel文件 3.1. 创建Excel文件 3.2. 打开已有的Excel文件 4. 储存数据 5. sheet操作 6. cell操作 在OpenPyXl中的基本改变跟Excel文件中是完全一致的。 workbook sheet c

    2024年02月01日
    浏览(64)
  • python使用openpyxl添加图片到excel文件中

    图片只能保存在某个sheet页面中,因此首先打开sheet页面: 然后创建一个图片: 最后保存即可: 最后的效果如下:

    2024年02月22日
    浏览(49)
  • Python:使用openpyxl读取Excel文件转为json数据

    openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files 文档 https://openpyxl.readthedocs.io/en/stable/ https://pypi.org/project/openpyxl/ 安装 环境 读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 输出读取的json数据 读写示例

    2024年02月15日
    浏览(73)
  • python: openpyxl操作Excel

    想要在文件中插入图片文件,需要安装pillow,安装文件:PIL-fork-1.1.7.win-amd64-py2.7.exe · font(字体类):字号、字体颜色、下划线等 · fill(填充类):颜色等 · border(边框类):设置单元格边框 · alignment(位置类):对齐方式 · number_format(格式类):数据格式 · protection(保护类):写保护

    2024年02月08日
    浏览(48)
  • python—openpyxl操作excel详解

    openpyxl属于第三方模块,在python中用来处理excel文件。 可以对excel进行的操作有:读写、修改、调整样式及插入图片等。 但只能用来处理【 .xlsx】 后缀的excel文件。 使用前需要先安装,安装方法: 注: 一个excel文件可看做是一个工作簿,工作簿中的一个Sheet就是一个工作表

    2024年02月04日
    浏览(45)
  • python基于openpyxl操作excel

    环境: python3.11 系统: ubuntu20.04 使用依赖: openpyxl 跳转官网 2.1 创建工作簿 工作簿至少要包含一个工作表(sheet), 可以使用如下来获取它 也可以创建自定义名称的工作表 2.2 查看工作簿下的所有工作表 2.3 访问/修改某个单元格数据 比如说修改A1单元格位置的参数 2.4 保存为文件 2

    2024年02月20日
    浏览(46)
  • Python模块openpyxl & 操作Excel文件

    简介         openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。openpyxl以Python语言和MIT许可证发布。         openpyxl可以处理Excel文件中的绝大多数内容,包括图表、图像和公式。它可以处理大量数据,支持Pandas和NumPy库导入和导出数据。Openpyxl还支持自

    2024年02月10日
    浏览(44)
  • python_通过openpyxl读写Excel

    openpyxl模块可实现对excel文件的读、写和修改,使用之前需要先安装该模块。 Excel演示内容,整个Excel文件称为工作簿,工作簿中的每个页称为工作表,工作表又由单元格组成。 结果:

    2024年02月11日
    浏览(47)
  • python-excel自动化-openpyxl

    openpyxl不进行计算; 它将公式写入单元格。 openpyxl库支持各种图表:条形图,折线图,面积图,气泡图,散点图和饼图。 !!!Openpyxl目前只支持在工作表内创建图表。现有工作簿中的图表将丢失。 以下设置会影响不同的图表类型。 通过将类型分别设置为col或bar,在垂直条

    2024年04月27日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包