介绍

Excel是我们日常工作中经常用到的办公软件,在处理数据和表格方面有着优异的性能,那么能不能用python来操作Excel呢?

答案是肯定的,openpyxl是一个第三方库,可以处理xlsx格式的Excel文件。

安装

pip install openpyxl

Workbook(工作簿)

import openpyxl

# 创建工作簿
wb = openpyxl.Workbook() # 打开工作簿
wb = openpyxl.open("demo.xlsx")
wb = openpyxl.load_workbook("demo.xlsx") # 保存工作簿
wb.save("demo.xlsx")

Worksheet(工作表)

import openpyxl

# 创建工作簿
wb = openpyxl.Workbook() # 创建工作表
wb.create_sheet("sheet2")
wb.create_sheet("sheet1",1) # 获取所有表
obj_sheet = wb.worksheets # 返回列表,列表中为对象
str_sheet = wb.sheetnames # 返回列表,列表中为字符串 # 切换工作表
sheet = wb.active # 默认获取第一张表
sheet1 = wb.get_sheet_by_name("sheet1")
sheet2 = wb.worksheets[2] # 删除工作表
wb.remove(wb.worksheets[1])

操作表内容

import openpyxl

""" 工作簿与工作表 """
# 创建工作簿
wb = openpyxl.Workbook()
# 切换工作表
ws = wb.worksheets[0]
wb.create_sheet("sheet1")
ws1 = wb.worksheets[1] """ 添加数据 """
# 单键添加
ws["A1"] = "姓名"
ws["B1"] = "年龄" # 多值添加
ws.append(["kidd", 18]) # 索引添加
ws.cell(3,1,"sun")
ws.cell(3,2,18)

""" 获取数据 """
# 单个获取
print("单个获取".center(50,"-"))
cell_name = ws["A1"]
cell_age = ws.cell(1,2)
print(cell_name.value, cell_age.value) # 返回cell对象 .value输出该单元格内容 # 区间获取
print("区间获取".center(50,"-"))
cell_a1_b1 = ws["A1:B1"] # 类似于切片
for cells in cell_a1_b1: # cell_a1_b1:<Cell 'Sheet'.A1> <Cell 'Sheet'.B1>
for cell in cells: # cells:(<Cell 'Sheet'.A1>, <Cell 'Sheet'.B1>)
print(cell.value) # 获取指定索引
print("指定索引".center(50,"-"))
for row in range(1,4):
for column in range(1,3):
cell = ws.cell(row, column)
print(cell.value) # 将每一行组成一个元祖,将该元祖放入生成器中
print("rows获取".center(50,"-"))
for row in ws.rows: # rows:生成器对象 --> 元祖 --> cell对象
print(row[0].value, row[1].value) # 将每一列组成一个元祖,将该元祖放入生成器中
print("columns获取".center(50,"-"))
for column in ws.columns: # columns:生成器对象 --> 元祖 --> cell对象
for cell in column:
print(cell.value) """ 其它 """
# 添加公式
ws["C1"] = "总年龄"
ws["C2"] = "=sum(B2:B%s)" %ws.max_row # 删除行列
ws.delete_rows(99)
ws.delete_cols(99) # 没有该列,不会报错,行也一样 # 获取最大行,最大列
max_row = ws.max_row
max_column = ws.max_column
print(max_row, max_column) # 3 2 # 改变sheet底部的颜色
ws.sheet_properties.tabColor = "7fff00"
ws1.sheet_properties.tabColor = "ff0000" # 根据数字得到字母,根据字母得到数字
from openpyxl.utils import get_column_letter, column_index_from_string
print(get_column_letter(2)) # B 根据列的数字返回字母
print(column_index_from_string('D')) # 4 根据字母返回列的数字 wb.save("demo.xlsx")

设置单元格风格

需要导入的类

from openpyxl.styles import Font, colors, Alignment

字体

下面的代码指定了等线24号,加粗斜体,字体颜色红色。直接使用cell的font属性,将Font对象赋值给它。

bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True)

sheet['A1'].font = bold_itatic_24_font

对齐方式

也是直接使用cell的属性aligment,这里指定垂直居中和水平居中。除了center,还可以使用right、left等等参数。

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

设置行高和列宽

# 第2行行高
sheet.row_dimensions[2].height = 40
# C列列宽
sheet.column_dimensions['C'].width = 30

合并和拆分单元格

  • 所谓合并单元格,即以合并区域的左上角的那个单元格为基准,覆盖其他单元格使之称为一个大的单元格。
  • 相反,拆分单元格后将这个大单元格的值返回到原来的左上角位置。
# 合并单元格, 往左上角写入数据即可
sheet.merge_cells('B1:G1') # 合并一行中的几个单元格
sheet.merge_cells('A1:C3') # 合并一个矩形区域中的单元格
  • 合并后只可以往左上角写入数据,也就是区间中:左边的坐标。
  • 如果这些要合并的单元格都有数据,只会保留左上角的数据,其他则丢弃。换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。
  • 以下是拆分单元格的代码。拆分后,值回到A1位置。
sheet.unmerge_cells('A1:C3')

Python openpyxl【包】的更多相关文章

  1. Python通过Openpyxl包汇总表格,效率提升100倍

    最近找了份小兼职,干的全是些无聊的工作,比如说给word调整一下排版啦.把从多方回收来的Excel汇总啦,这些极其催眠又耗时的事,怎么能接受手动去做呢!!(疯了嘛,谁知道以后还有多少类似的表格要汇总啊 ...

  2. 机器学习常用Python扩展包

    在Ubuntu下安装Python模块通常有3种方法:1)使用apt-get:2)使用pip命令(推荐);3)easy_instal 可安装方法参考:[转]linux和windows下安装python集 ...

  3. python库包大全(转)

    python 库资源大全 转自: Python 资源大全中文版 环境管理 管理 Python 版本和环境的工具 p:非常简单的交互式 python 版本管理工具.官网 pyenv:简单的 Python ...

  4. Python的包管理工具Pip (zz )

    Python的包管理工具Pip 接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_ins ...

  5. 简易安装python统计包

    PythonCharm简易安装python统计包及 本文介绍使用pythonCharm IDE 来安装Python统计包或一些packages的简单过程,基本无任何技术难度,顺便提一提笔者在安装过程中 ...

  6. 安装python 的 包 paramiko

    安装python 的 包 paramiko 安装 依赖 yum -y install gcc python-devel 获取安装 pycryptowget https://pypi.python.or ...

  7. python的包和模块

    python 的包即文件夹,但是必须包含_init_.py 模块就是xx.py

  8. Python的包管理

    0.Python的包管理 在刚开始学习Python的时候比较头疼各种包的管理,后来搜到一些Python的包管理工具,比如setuptools, easy_install, pip, distribut ...

  9. Python机器学习包

    常用Python机器学习包 Numpy:用于科学计算的包 Pandas:提供高性能,易于使用的数据结构和数据分析工具 Scipy:用于数学,科学工程的软件 StatsModels:用于探索数据.估计统 ...

  10. python 子包引用父包和其他子包

    python 子包引用父包和其他子包 python引用子目录很简单, 里面放个__init__.py就可以了. 如何在子目录里面引用其他目录(父目录,爷目录和同辈分目录)呢? 例如: python有项 ...

随机推荐

  1. 》》》Java利用aspose-words将word文档转换成pdf(破解 无水印)

    参考转载:Java利用aspose-words将word文档转换成pdf(破解 无水印) (bbsmax.com) 1.引入 aspose.words 包2.添加解水印 license.xml3.写业 ...

  2. Install MySQL wsl1

    To install MySQL on WSL (ie. Ubuntu) env Ubuntu 22.04.1 LTS mysql Ver 8.0.32-0ubuntu0.22.04.2 for Li ...

  3. git 命令 使用记录

    这是ider 在pull 代码是报的异常大概意思是本机有未处理的合并可是点击view files都之前删除的一些文件 这种问题可以使用一下命令 git fetch --all && g ...

  4. [转载] Image Pixels

    转载自http://shutha.org/node/789   Image Pixels Pictures that are printed or that are displayed on a di ...

  5. 大小写字符转换【Sql Server和C#两种写法】

    案例:Var Str = "abdCnd" 如何将Str = "ABDCND"? Sql Server写法:upper(Str)   ==>  Lower ...

  6. debian最小化安装+sway记录

    1. 最小化安装系统,只安装最基础的系统,如果是虚拟机中安装,安装SSH服务器可能更方便在宿主机终端操作客户机.deiban的安装器里有提供基础工具包的安装项,如果为了系统纯净不安装,可能会导致更多不 ...

  7. 学习- vue 中 API $attr 用法

    2.4.0新增 定义:包含了父作用域不作为 prop 被识别(且获取)的 attribute 绑定( class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的 ...

  8. GraalVM, Native Image, Java on Truffle, LLVM runtime, WebAssembly, JavaScript and Node.js关系是什么

    GraalVM, Java on Truffle, LLVM runtime, WebAssembly, JavaScript and Node.js关系是什么 GraalVM是一个JDK发行版,支持 ...

  9. .NetCore【工作应用】Unity

    Unity Unity是一个IoC容器,用来实现依赖注入(Dependency Injection,DI),减少耦合 Unity安装 install-package Unity 使用 IUnityCo ...

  10. lsyncd-实时同步(镜像)守护程序

    本文作者: 五行哥 QQ: 1226032602 E-mail: 1226032602@qq.com 官方文档 https://axkibe.github.io/lsyncd/ https://git ...