介绍

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. Day22:数据库导入&分工&准备科研训练

    今日完成的任务: 1.与组员共同排查jar包中的问题,发现是由于未导入数据库. 网上查询后在MySQL workbench中完成了导入导出(图中user数据库). 2.完成实验报告分工,我负责结论部分 ...

  2. Visio中的图无失真导入LaTeX中

    参考网址: LaTeX导入图片不失帧的方法_奋斗的西瓜瓜的博客-CSDN博客_latex图片模糊 LaTeX中插入eps格式图片_不觉岁华成暗度的博客-CSDN博客_eps latex Visio图片 ...

  3. 微信小程序云开发使用Typescript

    1.首先参考陈希章@中国在微信小程序开发中使用Typescript中的内容了解相关的内容 2.按以下步聚进行设置 1)确认本机环境已安装npm.通过在安装目录下输入 npm --v 如返回具体的版本, ...

  4. fsck.fat 检查修复(MS-DOS)fat类型文件系统

    使用方式 fsck.fat [option] DEVICE 例如 fsck.fat -aw /dev/usba0 fsck.fat 检查fat文件系统的一致性,并选择性的尝试修复他们. 如下文件系统问 ...

  5. print语法

    循环体 是 缩进的 :缩进是 Python 组织语句的方式.在交互式命令行里,得为每个缩输入制表符或空格.使用文本编辑器可以实现更复杂的输入方式:所有像样的文本编辑器都支持自动缩进.交互式输入复合语句 ...

  6. 解决adb devices无法连接各种模拟器

    经常使用到模拟器的童鞋,如果在使用adb devices命令时,发现出现"List of devices attached",模拟器USB调试都开启的情况下,也没有连接成功.这种情 ...

  7. The Semantics of Constructors——2.3 程序转化语意学

    2.3 程序转化语意学 #include "X.h" X foo() { X xx; return xx; } 一个人可能会对代码做出以下假设: 每次 foo()被调用,就传回 x ...

  8. ESP32-IDF 在vscode环境搭建

    前言 由于许多的未知原因,我尝试过许多网上教程,在vscode上搭建ESP-IDF环境,但结果是耗费了大把时间,结果还非常不理想. 在参考了(一)esp32开发环境搭建(VSCode+IDF实现单步调 ...

  9. nacos 1.4.2 建立集群,公司启动linux服务器常用命令

    2022-7-29 编写micro自动处理脚本,并加入了守护精灵进程 先启动prop1 服务器(xx.1xx.165.186) 再启动prop2服务器 (xx.1xx.174.173) ####### ...

  10. 一个MySQL双引号把我坑惨了!

    一.前言 最近经常碰到开发误删除误更新数据,这不,他们又给我找了个麻烦,我们来看下整个过程,把我坑得够惨. 二.过程 由于开发需要在生产环节中修复数据,需要执行120条SQL语句,需要将数据进行更新, ...