openpyxl简单入门——日常工作够用了

Posted watalo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openpyxl简单入门——日常工作够用了相关的知识,希望对你有一定的参考价值。

技术图片

适用于Excel 2010 xlsx/xlsm/xltx/xltm  

MS office 2010后的文件,都采用XML格式进行压缩,所以Openpyxl不能适用于2010前的Excel文件了。

操作非常简单,直接上手。

名称解释

名词 解释 备注
Excel文件 工作薄 xlsx,xlsm,xltx,xltm
sheet 工作表 又叫谢特、翔哥
row,rows  
column,columns  
cell 单元格  

安装

pip install openpyxl

创建/读取

from openpyxl import Workbook # 创建要用的
from openpyxl import load_workbook # 读文件要用的
# 创建
wb = Workbook()
wb.save(谢特.xlsx)
# 读取
wb2 = load_workbook(谢特.xlsx)找到处于工作状态的谢特
ws = wb.active # 自动生成新xlsx,一般自带一个谢特,名字叫‘sheet’

新建sheet

ws_1 = wb.create_sheet() #不带参数,就按(sheet,sheet1,sheet2...)命名
ws_2 = wb.create_sheet(0) # 不输入名字参数,只能使用0这个位置参数
ws_3 = wb.create_sheet(-1) # >>>TypeError: expected string or bytes-like object

 .create_sheet() 有 title 和 index 两个参数,title是文件名,index有三种状态。

ws1 = wb.create_sheet(从最后插入的谢特)  #从最后插入
ws2 = wb.create_sheet(从前面插入的谢特,0) #从前面插入
ws3 = wb.create_sheet(从倒数第二位插入的谢特,-1) #倒数第二位插入

关于sheet的名字

#改sheet的名字
ws_1.title = ok

#设置sheet标签的颜色 ws1.sheet_properties.tabColor = 1072BA#蓝色
#
用名字调取谢特 w4 = wb[ok] print(w4) #<Worksheet "ok">
#
取出工作簿中所有谢特的名字 print(wb.sheetnames) #列表
#
>>> [‘从前面插入的谢特‘, ‘Sheet‘, ‘ok‘, ‘Sheet2‘, ‘Sheet3‘, ‘从倒数第二位插入的谢特‘, ‘从最后插入的谢特‘]

#还可以使用循环打印谢特的名字 for sheet in wb: print(sheet.title)

一个单元格cell

#获取单元格
c = ws[A4]
print(c) #打印出来的不是值,是对象:<Cell ‘Sheet‘.A4>
#给单元格赋值 3种方式
ws[A4] = 4 
d = ws.cell(row=4, column=4, value=10)
d.value = 15

多个单元格cell

#选区域
cell_range = ws[A1:C2]
#选列
cal_C = ws[C]
cal_CtoE = ws[C:E] # 多列
#选行
row_10 = ws[10]
row_1to6 = ws[1:6] # 多行

遍历

#使用迭代器读取行
for row in ws.iter_rows(min_row=1, max_row=2, max_col=3):
    for cell in row:
        print(cell)

#使用迭代器读取列
for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
    for cell in col:
        print(cell)
# 如果在‘read-only’模式下是不能用的

# 遍历所有行或列
print(tuple(ws.rows))
print(tuple(ws.columns))

这里的 ws.rows 和 ws.columns 说得所有,是指激活过的那种。所谓激活就是只要鼠标点过就算,所有如果要标准化读取固定数据时,最好把不用的单元设置为禁止编辑。

最重要的部分——单元格的数据

# 调用单元格属性
cell.value
# 迭代器的values_only参数设置
for row in ws.iter_rows(min_row=1,max_col=3,max_row=4, values_only=True):
    print(row)
for col in ws.iter_cols(min_row=1, max_col=3, max_row=5, values_only=True)print(cell)
# 如果在‘read-only’模式下是不能用的

其他高级运用直接看官方文档吧,还有画图什么的。

以上是关于openpyxl简单入门——日常工作够用了的主要内容,如果未能解决你的问题,请参考以下文章

openpyxl表格的简单实用

打开 openpyxl 保存的工作簿时 Excel 有不可读的内容

openpyxl的简单使用

创建自己的代码片段(CodeSnippet)

python中openpyxl的用法安装,以及一些基本的操作

25个shell脚本代码分享,日常工作够用了