python openpyxl模块使用教程

news2025/2/23 5:27:56

目录

  • 安装 openpyxl 模块
  • 工作簿相关方法
  • 工作表对象
  • 单元格相关方法
    • 1. 单元格对象获取
    • 2. 单元格属性
    • 3. 单元格样式
    • 4. 插入/删除 行列

在这里插入图片描述

安装 openpyxl 模块

pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple

工作簿相关方法

  • openpyxl.Workbook() : 新建工作簿,配合 save 方法使用

  • openpyxl.load_workbook( path ) : 打开存在的工作簿

  • wb[ sheet_name ] : 获取指定名称的工作表对象

  • wb.get_sheet_by_name('Sheet1'): 获取指定名称的工作表对象

  • wb.sheetnames: 获取所有工作表名称,以列表形式返回

  • wb.worksheets:获取所有工作表对象,以列表形式返回

  • wb.create_sheet( title=None, index=None ) : 创建/新增工作表。title为工作表的名称 ;index为该工作表的位置,参数可不写,默认在最后增加名称为 Sheet的工作表

  • wb.copy_worksheet(sheet):在当前工作簿复制指定的工作表并返回复制后的工作表对象

  • wb.remove(sheet)删除指定的工作表

  • ws.save(path)保存到指定路径path的Excel文件中,若文件不存在会新建,若文件存在会覆盖

  • wb.index( worksheet ): 获取工作表的索引

  • wb.move_sheet( sheet, offset=0 ): 移动工作表

工作表对象

  • ws.title获取或设置工作表名
  • ws.max_row:工作表最大行数
  • ws.max_column:工作表最大列数
  • ws.append(list):表格末尾追加数据
  • ws.merge_cells(‘A2:D2’ / start_row= , end_row= , start_column= , end_column= )合并单元格
  • ws.unmerge_cells(‘A2:D2’ / start_row= , end_row= , start_column= , end_column= )解除合并单元格
  • ws.sheet_properties.tabColor = "1072BA": 设置/获取 sheet 标签按钮颜色
  • ws.delete_rows(1, ws.max_row): 清空工作表

单元格相关方法

1. 单元格对象获取

  • ws['A1']:根据坐标获取单个单元格对象
  • ws.cell( row, column, value=None ):根据行列获取单个单元格对象
  • ws[1]:获取第一行所有单元格对象,ws[‘1’]也可
  • ws['A']:获取第A列所有单元格对象
  • ws['A':'B']:获取从A到B列所有单元格对象,ws[‘A:B’]也可
  • ws[1:2]:获取从1到2行所有单元格对象,ws[‘1:2’]也可
  • ws['A1':'B2']:获取从A1到B2范围所有单元格对象,ws[‘A1:B2’]也可。
  • ws.values:获取所有单元格数据的可迭代对象,可以通过for循环迭代或通过list(ws.values)转换为数据列表
  • ws.rows:获取所有数据的格式组成的可迭代对象
  • ws.columns:获取所有数据的格式组成的可迭代对象
  • ws.iter_rows(min_row=None, max_row=None, min_col=None, max_col=None):获取指定边界范围并以的格式组成的可迭代对象,默认所有行
  • ws.iter_cols(min_col=None, max_col=None, min_row=None, max_row=None): 获取指定边界范围并以的格式组成的可迭代对象,默认所有列

单元格写入后一定要保存,否则Excel不会变化
1. 单个单元格数据读写

import openpyxl

source_path = 'test.xlsx'
source_wb = openpyxl.load_workbook(source_path )
sour_sheet = source_wb['Sheet1'] # 获取 Sheet1 对象

# 读/写  B2 单元格数据
sour_sheet['B2'].value = 12
cell_value = sour_sheet['B2'].value
print('B2 ', cell_value)

# 读/写 2行 2列 数据
sour_sheet.cell(2, 3).value = 34
cell_value = sour_sheet.cell(2, 3).value
print('2行3列 ', cell_value)

2. 多个单元格数据读写

import openpyxl

source_path = 'test.xlsx'
source_wb = openpyxl.load_workbook(source_path )
sour_sheet = source_wb['Sheet1'] # 获取 Sheet1 对象

test_data = [
    [1, 2 , 3],
    [4, 5 , 6],
    [7, 8 , 9],
]

# 写  A1:C3 单元格数据
cells_obj = sour_sheet['A1:C3']  # 获取此范围内单元格对象
index_row = 0
index_column = 0
for row_cells in cells_obj:
    for col_cell in row_cells:
        col_cell.value = test_data[index_row][index_column]
        index_column += 1
    index_row += 1
    index_column = 0

# 读 A1:C3 单元格数据
for row_cells in cells_obj:
    for col_cell in row_cells:
        print(col_cell.value)

2. 单元格属性

  • cell.value :获取或设置
  • cell.column数字列标,例:1
  • cell.column_letter字母列标,例:A
  • cell.row行号
  • cell.coordinate坐标,例如'A1'
  • cell.data_type数据类型, 's' = string字符串,'n' = number数值,会根据单元格值自动判断
  • cell.number_format单元格格式,默认'General'常规,详见excel自定义数据类型

3. 单元格样式

  • cell.font :获取或设置单元格Font对象 (字体名称,字体大小,是否加粗,字体颜色等)
  • cell.border : 获取或设置单元格边框
  • cell.alignment : 获取或设置单元格水平/垂直对齐方式
  • cell.fill:获取或设置单元格填充颜色
  • ws.row_dimensions[行号]:获取行对象(非行数据,包括行的相关属性、行高等)
  • ws.column_dimensions[字母列标]:获取列对象(非行数据,包括行的相关属性、列宽等)
  • get_column_letter(index):根据列的索引返回字母
  • column_index_from_string(string):根据字母返回列的索引
  • row_obj.height:获取或设置行高
  • column_obj.width:获取或设置列宽
  • ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4): 合并单元格
  • ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4) : 拆解单元格

复制合并的单元格,只能一个个的复制单个单元格格式,再执行合并操作

1. 设置单元格字体格式、行高列宽、对齐格式

  • 字体格式
    • name:字体名称。
    • size:字体大小。
    • color:颜色。
    • bold:加粗。
    • italic:斜体
    • underline:下划线
  • 对齐方式
    • horizontal:横向(左右)对齐方式。
      • 可选参数 'left' , 'centerContinuous' , 'center' , 'distributed' , 'right' , 'fill' , 'general' , 'justify'
    • vertical:竖向(上下)对齐方式。
      • 可选参数 'bottom' , 'center' , 'distributed' , 'top' , 'justify'
from openpyxl.styles import Font, colors, Alignment # 导入必需的类
# Font对象表示字体样式,Alignment对象表示对齐方式
import openpyxl

source_path = 'test.xlsx'
source_wb = openpyxl.load_workbook(source_path )
sour_sheet = source_wb['Sheet1'] # 获取 Sheet1 对象

# 设置字体  设置 等线24号,加粗斜体,字体颜色红色
my_red = openpyxl.styles.colors.Color(rgb='00FF0000')
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=my_red, bold=True)
sour_sheet['A1'].font = bold_itatic_24_font

# 设置对齐方式 设置B1中的数据垂直居中和水平居中
sour_sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')

# 设置行高和列宽 第2行行高
sour_sheet.row_dimensions[2].height = 40
# C列列宽
sour_sheet.column_dimensions['C'].width = 30

source_wb.save(source_path)

2. 设置单元格自动换行

from openpyxl import Workbook
from openpyxl.styles import Alignment

# 创建一个新的Excel工作簿
wb = Workbook()
# 选择第一个工作表
ws = wb.active

# 在A1单元格中添加长文本
ws['A1'] = '这是一份非常长的文本,需要进行自动换行才能全部显示出来。'

# 设置A1单元格自动换行
ws['A1'].alignment = Alignment(wrap_text=True)

2. 写入整行数据

import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
 
sheet = wb.create_sheet('sheet2')
lis = ['张三','在家','地址','学号','手机','昵称']
sheet.append(lis)
 
wb.save("test.xlsx")

4. 插入/删除 行列

  • ws.insert_rows(row_index,amount=1):在第row_index行上方插入amount列,默认插入1列
  • ws.insert_cols(col_index,amount=1):在第col_index列左侧插入amount列,默认插入1列
  • ws.delete_rows(row_index,amount=1):从row_index行开始向下删除amount行,默认删除1行
  • ws.delete_cols(col_index,amount=1):从col_index列开始向右删除amount行,默认删除1列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/851093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity游戏源码分享-模拟城市搭建City Adventure

Unity游戏源码分享-模拟城市搭建City Adventure 插件如下: 下载地址: https://download.csdn.net/download/Highning0007/88191931

excel行转列

1.选中要转的内容,ctrlc 2.选择对应的大小,右击,点转置 3.ok

JavaScript算法【入门】

作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。…

使用nodejs自动生成后端的模板文件

在编写nodejs后端时,我发现一些模板文件是十分通用的,所以想着由机器帮我生成简单的模板文件。利用的是nodejs的fs能力,代码如下 const fs require("fs"); const path require("path"); const { humpTransformLine } …

【vue Dplayer】播放hls视频流

准备工作 安装Dplayer和hls.js npm install dplayer --save npm install hls.js --save准备测试流 hls测试地址&#xff1a;&#xff08;截止2023.08.08有效&#xff09; http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8 <template><d…

Android 项目导入高德SDK初次上手

文章目录 一、前置知识&#xff1a;二、学习目标三、学习资料四、操作过程1、创建空项目2、高德 SDK 环境接入2.1 获取高德 key2.2下载 SDK 并导入2.2.1、下载SDK 文件2.2.2、SDK 导入项目2.2.3、清单文件配置2.2.4、隐私权限 3、显示地图 一、前置知识&#xff1a; 1、Java 基…

Java8实战-总结14

Java8实战-总结14 引入流流是什么 引入流 集合是Java中使用最多的API。几乎每个Java应用程序都会制造和处理集合。集合对于很多编程任务来说都是非常基本的&#xff1a;它们可以让数据分组并加以处理。为了解释集合是怎么工作的&#xff0c;想象一下准备列出一系列菜&#xff…

带你认识红黑树

红黑树 一、什么是红黑树&#xff1f;1.1 AVL树1.2 红黑树 二、红黑树的特点三、红黑树的insert、delete3.1 insert3.1.1 父节点为空3.1.2 父节点为Black节点3.1.3 父节点为Red节点3.1.3.1 叔叔节点为Red节点3.1.3.2 叔叔节点为Black节点 3.2 delete3.2.1 删除节点有两个子节点…

libmpv使用滤镜处理视频进行播放

一、前言 作为一个功能强大的多媒体框架,libmpv为开发者提供了广泛的功能和灵活的控制权。滤镜是libmpv的一个重要特性,允许开发者对视频进行各种实时处理和增强,从而满足用户对于个性化、创意化和高质量视频体验的需求。 滤镜是一种在视频渲染过程中应用特定效果的技术。…

若依-plus-vue启动显示Redis连接错误

用的Redis是windows版本&#xff0c;6.2.6 报错的主要信息如下&#xff1a; Failed to instantiate [org.redisson.api.RedissonClient]: Factory method redisson threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect t…

Vscode-工具使用

Vscode &#xff0c;这玩意儿是开源的&#xff0c;以前用收费的破解版&#xff0c;过段时间就高版本不匹配&#xff0c;这次搞个不要钱的玩玩&#xff0c;记录使用心得 下载 下载地址&#xff1a;官网 点击下载&#xff0c;但是这里有个问题下载比较慢&#xff0c;解决办法&a…

Redhat Linux 安装MySQL安装手册

Redhat安装MySQL安装手册 1 下载2 上传服务器、解压并安装3 安装安装过程1&#xff1a;MySQL-shared-5.6.51-1.el7.x86_64.rpm安装过程2&#xff1a;MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm安装过程3&#xff1a;MySQL-server-5.6.51-1.el7.x86_64.rpm安装过程4&#xff…

从碎片化到整体性,医美服务的下一个战场

近年来&#xff0c;医美消费需求蓬勃增长&#xff0c;各类医美机构、医美平台如雨后春笋般涌现&#xff0c;为医美消费者提供了更多选择的同时&#xff0c;也赋予了他们更大的权利。据调查&#xff0c;在经历了一次不愉快的体验之后&#xff0c;“换一家”——是绝大多数医美消…

k8s --pod详解

目录 一、Pod基础概念 1、pod简介 2、在Kubrenetes集群中Pod有如下两种使用方式 3、pause容器使得Pod中的所有容器可以共享两种资源&#xff1a;网络和存储。 &#xff08;1&#xff09;网络 &#xff08;2&#xff09;存储 4、kubernetes中的pause容器主要为每个容器提供…

IELTS图表类作文基础知识

表格可以用table或chart来表示。 其实&#xff0c;数据类图表除了可以用chart表示&#xff0c;也可以用其他单词。 表格又可以称为table。而带有几何图形的图表可以用graph来表示。 像饼状图、折线图、柱状图这样用几何图形&#xff0c;或者直接用表格来呈现数据的形式&#x…

macOS(m芯片)连接服务器及其进行文件传输的各种方式的详解

说明&#xff1a;使用了macOS后发现&#xff0c;win系统能使用的xshell、xftp等连接服务器及其文件传输等软件均不能使用了&#xff0c;没有兼容的版本。所以我们刚切换到mac系统该如何去适应呢。 一、连接远程服务器 macOS中前文也说道我们使用的是iterm2进行终端控制的&…

【高级程序设计语言C++】红黑树

1. 红黑树的概念2. 红黑树的插入2.1. 情况12.2. 情况22.3. 情况32.4. 插入情况小总结 3. 红黑树与AVL树的对比4. 红黑树在线生成网站 1. 红黑树的概念 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它在插入和删除操作时通过调整节点的颜…

anylabeling安装与使用说明

文章目录 一.anylabeling说明二. 安装教程1. 可执行程序方式2. python程序 一.anylabeling说明 官网:https://anylabeling.nrl.ai/docs 该工具作为一个具有Segment Anything和YOLO模型的智能标签工具&#xff0c;可以快速、准确地对图像进行标注。 二. 安装教程 1. 可执行程…

Docker Desktop 启用 Kubernetes 失败后处理

一、环境 Windows 10 C:\Users\zhuji>docker --version Docker version 24.0.2, build cb74dfc 二、问题 在setting -> Kubernetes 中&#xff0c;选中 Enable Kubernetes 后&#xff0c;长时间显示 Starting ... &#xff0c;在Images中显示几个自动下载的镜像后&…

e6zzseo:外贸独立站怎么推广

外贸独立站的推广需要一系列综合性的策略和方法&#xff0c;以吸引目标市场的访问者&#xff0c;并将他们转化为潜在客户。以下是一些推广外贸独立站的建议&#xff1a; 1. 搜索引擎优化&#xff08;SEO&#xff09;&#xff1a; e6zzseo认为优化网站可以适应搜索引擎的要求&a…