如何用Python 自动化办公?Excel 模块 — openpyxl 的基本使用!

openpyxl 介绍 openpyxl 是一个直接可用于读写 xlsx 、xlsm、xltx、xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动化批量操作 先说一下安装部分,如果小伙伴们用 Anaconda 作为 Python 环境的话,openpyxl 无需安装可直接使用;需要安装的话方法也非常简单 pip 工具一行命令即可 pip install openpyxl 复制代码 xlsx 文件属性 在对 Excel 表格处理之前,需要了解一下 xlsx 文件的几个名词解释及构造 1,Workbook 指的是神什么? Workbook 名叫工作薄,可以代指一个 xlsx 文件; 2, sheet、cell、row 、col 分别指的是什么? 关于问题2 ,可参考下图(见注释)

openpyxl 基本命令操作 1, 创建 一个空的 workbook from openpypl import Wrokbook from openpyxl.utils import get_column_letter wb = Workbook() ws1 = wb.active 复制代码 一个 Workbook 默认至少含有一个 worksheet ,通过命令 Workbook.active 来获取当前第一个 sheet(也就是第一个 sheet); 2,创建新的 worksheet ws1 = wb.create_sheet("Mysheet") # insert at the end (default) ws2 = wb.create_sheet("Mysheet", 0) # insert at first position # or ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position 复制代码 可通过 create_sheet() 命令创建新的 worksheet , create_sheet 默认有两个参数 name、index;

name,定义 sheet 的名字;

index,来设置插入 sheet 的位置,默认为 None 即新创建的 sheet 插入到最后面;0 代表插入第一个 sheet 的位置;

3,更改 sheet 的名字 一行代码即可 ws.title = 'New Title' 复制代码 4,更改 sheet 上 tab 背景颜色 ws.sheet_properties.tabColor = "1072BA" 复制代码 通过修改 Wroksheet.sheet_properties.tabColor 参数即可,需要注意的是这里只接收 RRGGBB 颜色代码; 关于不清楚 sheet tab 背景颜色不清楚是什么的小伙伴,可参考下图;

5, 返回 Workbook 中所有 sheet 的名字 通过 Workbook.sheetname 命令即可查看 >>> print(wb.sheetnames) ['Sheet2', 'New Title', 'Sheet1'] # 或者用迭代方法 >>> for sheet in wb: ... print(sheet.title) 复制代码 6,将现有的 worksheets 复制新创建的 workbook 中 可通过 Workbook.copy_worksheet()函数方法 # 将 source 中的worksheet复制到 target 中去 source = wb.active target = wb.copy_worksheet(source) 复制代码 需要注意的是,当 workbook 为只读或 只写模式时不可复制;另外只有 cells(值,样式,超链接、注释) 和 特定的 worksheet 属性(维度、格式、属性)可以复制,其他的一些 workbook / worksheet 属性不可复制( Images Charts 等) 7,获取某个 cell 的数据 成功创建完 Workbook、Worksheet 之后,接下来就可以修改 cell(单元格中的内容,Cells 可以通过 worksheet 中特有关键词来获取 >>> c = ws['A4'] # 获取第4行列名为A 单元格中的值 复制代码 通过赋值命令对其修改 ws['A4'] = 4 复制代码 openpyxl 中有一个函数 Worksheet.cell() 可修改单元格中的数据,可定位到具体行、具体列进行更改, d = ws.cell(row = 4,columns = 2,value = 10) 复制代码

row 表示指定行

columns 表示指定列

value 表示该单元格中需替代的数据值;当此参数不设置时表示只对该 cell 创建内存空间,不赋值

例如 >>> for x in range(1,101): ... for y in range(1,101): ... ws.cell(row=x, column=y) 复制代码 8,获取多个单元格 8.1 , openpyxl 也可以进行切片操作,来获取多个单元格 >>> cell_range = ws['A1':'C2'] 复制代码 8.2, worksheet 中多行多列数据获取方式相似 >>> colC = ws['C'] >>> col_range = ws['C:D'] >>> row10 = ws[10] >>> row_range = ws[5:10] 复制代码 8.3,Worksheet.iter_row() 来获取 sheet 中行列范围,再利用循环迭代获取每一个单元格数据 >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): ... for cell in row: ... print(cell) <Cell Sheet1.A1> <Cell Sheet1.B1> <Cell Sheet1.C1> <Cell Sheet1.A2> <Cell Sheet1.B2> <Cell Sheet1.C2> 复制代码 8.4,Worksheet.iter_cols() 也可以实现同样功能 >>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2): ... for cell in col: ... print(cell) <Cell Sheet1.A1> <Cell Sheet1.A2> <Cell Sheet1.B1> <Cell Sheet1.B2> <Cell Sheet1.C1> <Cell Sheet1.C2> 复制代码 需要注意的时在 read-only 模式中,Worksheet,iter_cols() 方法不能使用 9,只查看 cell 中的 value 9.1,只查看 worksheet 中的 value 时,可通过 Worksheet.values 属性,该属性将迭代 worksheet 中所有行,但返回的仅仅是 cell values for row in ws.values: for value in row: print(value) 复制代码 9.2,通过 Worksheet.iter_rows() 和 Worksheet.iter_cols() 也可以实现,在函数中加入一个参数 values_only = True 即可返回 cell 的值 >>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True): ... print(row) (None, None, None) (None, None, None) 复制代码 10,读写文件操作 10,excel 文件加载 openpyxl.load_workbook() 函数来打开一个指定本地存储的 xlsx 文件 >>> from openpyxl import load_workbook >>> wb2 = load_workbook('test.xlsx') >>> print wb2.sheetnames ['Sheet2', 'New Title', 'Sheet1'] 复制代码 10.2,excel 文件存储 Workbook 修改成功后,后创建完成之后,通过Workbook.save(path) 命令即可保存至本地磁盘 >>> wb = Workbook() >>> wb.save('balances.xlsx') 复制代码

好了,以上就是本篇文章的所有内容了,最后感谢大家的阅读!

本文章素材来源于网络,如有侵权请联系删除。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342