0 前言

在阅读本文之前,请确保您已满足或可能满足一下条件:

  1. 请确保您具备基本的Python编程能力。

  2. 请确保您会使用Excel。

  3. 请确保您的电脑已经安装好Python且pip可用。

  4. 请确保您已经读过前文:

    如何使用Python操作Excel(一)LogicPanda,公众号:编程杂艺Python | 使用Python操作Excel文档(一)

从如何使用Python操作Excel(一)中,我们可以得到一个“example.xlsx”文件,内容如图。

本文会继续讲解openpyxl的用法。

1. 在工作表中插入/删除行/列

对工作表的行或列进行操作时,使用Worksheet类中的方法,insert_row(),delete_row(),insert_col(),delete_col()

from openpyxl import load_workbookimport openpxlwb = load_workbook("example.xlsx")ws = wb.get_sheet_by_name("demo")ws.insert_rows(1) # 在第一行前插入一行ws.insert_rows(1, 2) # 在第一行前插入两个ws.delete_rows(2) # 删除第二行ws.delete_rows(2, 2) # 删除第二行及其后边一行(共两行)ws.insert_cols(3) # 在第三列前插入一列ws.insert_cols(3, 2) # 在第三列前插入两列ws.delete_cols(4) # 删除第四列ws.delete_cols(4, 2) #删除第四列及其后边一列(共两列)wb.save("example.xlsx")

2. 访问单元格

在前文中我们讲到了如何访问单元格,如:

ws['A1']ws['A1'].value

我们还可以使用行或列的方式访问:

ws['A'][1].value # ws['A1'].valuews[1][2].value # ws['C1'].valuews['A'] # 会返回元祖,‘A’列中所有的内容ws[1] # 会返回元祖,第1行中所有的内容
>>> ws[1]      (, , , , , , , , , , , , , , , , , , )>>> ws['A']      (, , , , , , , , , , , , , , , , , , )

PS:我们还可用切片的方式来访问一个范围内的单元格。

>>> ws["A1:B3"]  ((, ),(, ),(, ))>>> ws["A1:B3"][1][1].value      4>>> ws['A1':'B3']    ((, ),(, ),(, ))>>>

请留意两种切片的不同。

还可以使用行切片或者列切片:

>>> ws['A:B']((, , , , , , , , , , , , , , , , , , ), (, , , , , , , , , , , , , , , , , , ))>>> ws[1:2]((, , , , , , , , , , , , , , , , , , ), (, , , , , , , , , , , , , , , , , , ))

3. 使用公式

首先你要清晰的明白,你要使用的公式是什么。同时你需要知道的是,openpyxl能够在工作表中执行公式进行计算,但是并不能在程序中打印公式的值

>>> ws['A20']="=SUM(A1:A19)"      >>> ws['A20'].value'=SUM(A1:A19)'>>> wb.save("formula.xlsx") # 请查看A20

即便如此,openpyxl却可以帮助你检查公式名是否正确:

>>> from openpyxl.utils import FORMULAE>>> "SUM" in FORMULAE      True

当然,你也可以用print(FORMULAE) 来看看都有什么公式可以用(与Excel并没有什么不一样)。

4. 移动单元格

使用ws.move_range()方法来移动单元格。

ws.move_range("D4:F10", rows=-1, cols=2)

会将单元格D4-F10,向上移动1行,想右移动两行。参数ows和cols用来控制单元格的移动方向。如果目标单元格有内容,会被覆盖。

5. 拆分/合并单元格

使用ws.merge_cells()和ws.unmerge_cell()l来和合并,拆分单元格。

>>> ws.merge_cells('A2:D2') # 值为ws['A2']的值>>> ws["A2"] # >>> ws["A2"].value # 2>>> ws["B2"].value # 空>>> ws.unmerge_cells('A2:D2') # 值会回到ws['A2'],'B2:D2'会为空。>>> 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)

6. 插入图片

想要用openpyxl向工作表中插入图片,需要安装Pillow库:

from openpyxl.drawing.image import Imageimg = Image('logo.jpg')      ws.add_image(img, 'A21')wb.save("img.xlsx")

7. 折叠

ws1 = wb.create_sheet() # 新建一张表Sheetws1.column_dimensions.group('A','D', hidden=True) # 列折叠,A-D列ws1.row_dimensions.group(1,10, hidden=True) # 行折叠 1-10行wb.save('group.xlsx')

8. 只读模式与只写模式

只读模式,仅用来读取文档内信息,不可写。

wb = load_workbook(filename="example.xlsx", read_only=True)wb.create_sheet("test.xlsx") # 会报错Traceback (most recent call last):  File "", line 1, in     wb.create_sheet("test.xlsx")  File "D:\Python\lib\site-packages\openpyxl\workbook\workbook.py", line 194, in create_sheet    raise ReadOnlyWorkbookException('Cannot create new sheet in a read-only workbook')openpyxl.utils.exceptions.ReadOnlyWorkbookException: Cannot create new sheet in a read-only workbook

只写模式,仅用来写入数据。

wb = Workbook(write_only=True)ws = wb.create_sheet()type(ws) # hasattr(ws,"value") # falsehasattr(ws,"title") # True

即是说,ws已经不是worksheet对象,而是WriteOnlyWorksheet对象,也没有value属性,不可以读取单元格的值。这样做是为了让Python处理只有写入大量数据的情况,更快。

9.数字格式

可以使用Cell对象的nember_format属性来查看单元格的数字样式。

wb = load_workbook("example.xlsx")ws = wb.activews['A1'].nember_format # 'General'# 现在将单元格的数字格式设置为数值ws['A1'].nember_format # '0.00_ '# 可以在Python中修改数字格式如:ws['A1'].nember_format = 'General'# 单元格可以直接赋值时间日期类型的数据类型,如:ws['A1'] = datetime.datetime.now()ws['A1'].value # datetime.datetime(2019, 6, 9, 19, 57, 40, 918556)# 可以用is_date属性判断单元格是否为日期类型的数据ws['A1'].is_date

10. 复习下今天内容

今天的内容主要是及第一篇文章之后,继续讲如何使用Python操作单元格和工作表。

  1. 插入/删除行或列,访问单元格的方法

  2. 移动单元格,合并/拆分单元格

  3. 插入图像、使用公式折叠行/列

  4. 使用数字格式,只读和只写模式

好了,今天的内容就到这里了。我们下次见。

如果您对本文或者本公众号感兴趣,欢迎关注我的公众号,留言您想看的内容,在这里,我们一起成长!

"不止于编程"

openpyxl删除添加excel列_Python | 如何使用Python操作Excel(二)相关推荐

  1. python对excel某一列求和-96、python操作excel求和

    这里介绍如何用python来自动完成我们的excel工作. 本文的目的是展示一些常见的Excel任务,以及如何在python pandas中执行类似的任务.例子微不足道,但重要的是通过这个例子来循序渐 ...

  2. python控制excel打印_九、Python 操作excel(一)

    pip install xlrd(读) 1.导入:import xlrd 2.打开文件:book = xlrd.open_workbook(文件位置+文件名) 3.根据sheet名称获取工作薄:she ...

  3. python对excel数据求和_96、python操作excel求和

    这里介绍如何用python来自动完成我们的excel工作. 本文的目的是展示一些常见的Excel任务,以及如何在python pandas中执行类似的任务.例子微不足道,但重要的是通过这个例子来循序渐 ...

  4. python excel处理成绩_用Python操作Excel,实现班级成绩的统计

    本次是在原来有一定格式的Excel文档中补充成绩. 安装的模块:xlwt . xlrd .xlutils xlrd的模块是只用读取xls文件,不能写文件,同理xlwt,只(新建写)不读已有的xls, ...

  5. 最全Python操作excel代码,让你每天早下班两小时

    在数字化时代,很多人工作中经常和excel打交道.本文介绍Python操作excel的脚本,让你工作效率更高.    文章目录 一.安装openpyxl模块 二.加载库 三.创建文件和工作表 四.在工 ...

  6. python删除第一行_python3.7 openpyxl 删除指定一列或者一行的代码

    python3.7 openpyxl 删除指定一列或者一行 # encoding:utf-8 import pandas as pd import openpyxl xl = pd.read_exce ...

  7. python excel取列_python取excel表格第一列数据-python操作excel,使用xlrd模块,获取某一列数据的......

    怎样用python,读取excel中的一列数据 Python对Excel的读写主要有xlrd.copyxlwt.xlutils.openpyxl.xlsxwriter几种. 1.xlrd主要用来读百取 ...

  8. python利用表格中的某一个列_python取excel表格第一列数据?python操作excel,使用xlrd模块,获取某一列数据的语句为...

    用Python修改excel中一列数据 可以使用pandas库,先读取excel文件,然后使用pandas库来修改一列,然后写入文件即可. 怎样用python,读取excel中的一列数据 sheet. ...

  9. python excel自动化办公_Python自动化办公系列之Python操作Excel

    [作者导语]本文是鉴于有些粉丝的工作需求,有时候需要遇到这些文件的处理.因此,我写了一个文章集合,供大家参考.全篇包括三个章节,分别为:Python使用openpyxl操作excel.python使用 ...

最新文章

  1. 【Qt】Qt再学习(十五):关于paintEvent、QPainter学习这一个demo就够了
  2. 后处理安装_分享UG后处理出Excel程序单的方法
  3. sc169 lecture note
  4. php对表格的处理,JavaScript_js处理表格对table进行修饰,js处理表格 1、行颜色间隔显示 - phpStudy...
  5. 23种设计模式之策略模式
  6. 关于fragment中使用onActivityResult
  7. android 图片上传java,php服务器
  8. [leetcode周赛]1346. 检查整数及其两倍数是否存在
  9. 基本sql语句--增删改查
  10. oracle判断字符串以什么开头_sql语句判断字符串以什么什么开头
  11. Chrome浏览器修改繁体为中文简体
  12. ActionForm的详解
  13. kali最高权限root
  14. 2008年世界各国最新GDP排名
  15. PostgreSQL 技术内幕(二) Greenplum-AO表
  16. 40万奖金 | 阿里云天池第三届数据库性能大赛,广邀英才挑战创新上云
  17. C++中的运算符和运算符优先级总结
  18. 解析JPEG文件的GPS信息
  19. Win11任务栏消息提醒功能如何开启教学
  20. c语言实验心得100字,实验心得100字_100个面试常见经典问题_100个面试问题和答案...

热门文章

  1. maven java1.7_本周Java技巧#7 – Maven慢吗?
  2. swarm部署集群_WildFly Swarm –将Java EE应用程序部署为独立的Jar
  3. 投行数据_投行对Java的二十大核心访谈问答
  4. Java 14的新功能
  5. 配置HTTPS以与Servlet一起使用
  6. 信号量使用例子_用信号量锁定:一个例子
  7. 使用Spring boot,Thymeleaf,AngularJS从零开始构建新的Web应用程序-第2部分
  8. activemq 连接_ActiveMQ网络连接器
  9. JPA实体锁定模式的差异
  10. 针对Java中的XSD验证XML