openpyxl操作excel

Openpyxl是一个常用的python库,用于对Excel的常用格式及其模板进行数据读写等操作。

安装

安装

pip install openpyxl

pillow:在文件中需要使用images (jpeg, png, bmp,...)时,需要安装pillow库。

注意:写操作时请关闭需要操作的excel文件,否则写不成功

加载xlsx操作内容

加载外部excel的xlsx步骤:

加载xlsx文件,获得该文件的句柄,为workbook

from openpyxl import load_workbook
wb = load_workbook(‘test.xlsx‘)
print(wb.get_sheet_names())
# [‘Sheet2‘, ‘New Title‘, ‘Sheet1‘]

获取指定列

wb = load_workbook(pwd)
ws = wb[‘action‘]
cols = ws[‘C‘]

for cell in range(2, ws.max_row):
   v = v2[cell].value
   if v is None:   # 去掉空行
      continue
   print(v)

max_row是包含了所有的空行的,空行记录为None

在内存中新建workbook

创建 workbook

开始使用openpyxl,没有必要在文件系统上创建一个文件。

只需要导入Workbook类并开始使用它。可以把wordbook想象成一个excel文件。

from openpyxl import Workbook
wb = Workbook()

workbook创建后至少至少要创建一个worksheet。使用openpyxl.workbook.Workbook.active()

ws = wb.active

该方法使用了_active_sheet_index属性, 默认会设置0

创建worksheet

使用openpyxl.workbook.Workbook.create_sheet()创建新的worksheet

ws1 = wb.create_sheet("new_sheet_1") # 新建sheet,插入到最后(默认)
ws2 = wb.create_sheet("new_sheet_2", 0) # 插入到最开始的位置

指定worksheet的名称

不指定sheet名称时,按照sheet,sheet1,sheet2自动增长

ws3 = wb.create_sheet()

自定义worksheet名称,通过title属性指定名称,设置了sheet的名称

ws3.title = "new_sheet_3"

输出wb现在所有的sheetname查看

通过openpyxl.workbook.Workbook.sheetnames()输出wb现在所有的sheetname

print wb.get_sheet_names()
print(wb.sheetnames)

循环

for sheet in wb:
print(sheet.title)

指定worksheet tab按钮的颜色

新建的sheet tab颜色为白色,可以另外指定sheet tab按钮的颜色

ws3.sheet_properties.tabColor = "1072BA"

激活某个worksheet

通过worksheet名称激活某个sheet使用

名称看成workbook中的一个key

ws3 = wb["new_sheet_3"]

通过_active_sheet_index激活某个sheet使用

wb._active_sheet_index = 1 # 获取第二个sheet

创建worksheet副本

使用openpyxl.workbook.Workbook.copy_worksheet()创建worksheet副本

source = wb.active
target = wb.copy_worksheet(source)

只能复制cell和style。不能复制工作表之间的工作簿。

操作单元格

当worksheet在内存中被创建时,是没有包含cells的,cells是在首次访问时创建

单元格可以看作是worksheet的key,通过key去访问单元格中的数据

c = ws[‘A3‘] # 访问单元格,不存在则会自动创建一个
print c.value
ws[‘A4‘] = ‘a4 value‘ # 指定单元格的值
print ws[‘A4‘].value
d = ws.cell(row=4, column=2, value=‘通过cell指定‘) # 通过row column数字指定
print d.value

循环在内存中创建cells

不用指定其值也可以在内存中创建

for i in range(1, 10):
for j in range(1, 10):
ws.cell(row=i, column=j)

通过切片Ranges指定许多cells

cell_range = ws[‘A1‘:‘C2‘]

也可以Ranges rows 或者columns

print ws[‘C‘]
print ws[‘C:D‘]
print ws[10]
print ws[5:10]

也可以使用iter_rows() 指定行->行,截止列

for row in ws.iter_rows(min_row=1, max_row=2, max_col=3):
for c in row:
print(c)

iter_cols() 指定列->列,截止行

for row in ws.iter_rows(min_col=1, max_col=3, max_row=20):
for c in row:
print(c)

使用index

直接使用

for row in ws.iter_rows(min_row=2, max_row=5, max_col=6):
    for index, c in enumerate(row):
        row[0].value = "aaa"
        row[1].value = "bbb"
        row[2].value = "ccc"

遍历所有文件的行或列

ws[‘C9‘] = ‘hello world‘
tuple(ws.rows) # 转化成tuple方便for in操作
tuple(ws.columns)

保存文件

wb = Workbook()
wb.save("assets/sample.xlsx")

此操作将覆盖现有的文件没有警告。

所有的操作都需要保存到excel才能看见

保存为模板

指定属性as_template=True,就可以将文档保存为模板.xltx

wb = load_workbook(‘document.xlsx‘)
wb.template = True
wb.save(‘document_template.xltx‘)

或者将该属性设置为False(默认),另存为一个文档:

wb = load_workbook(‘document_template.xltx‘)
wb.template = False
wb.save(‘document.xlsx‘, as_template=False)

使用公式

wb = load\_workbook\(‘assets/sample.xlsx‘\)
ws = wb.active
ws\["A5"\] = "=SUM\(2, 1\)"
wb.save\("assets/sample.xlsx"\)

原文地址:https://www.cnblogs.com/for-you/p/12604054.html

时间: 2024-10-27 07:34:55

openpyxl操作excel的相关文章

python openpyxl 操作 excel

初识与安装 Openpyxl is a Python library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files. 安装 1 $ pip install openpyxl 一个简单创建例子 1 2 3 4 5 6 7 8 9 10 11 12 13 from openpyxl import Workbook wb = Workbook() # 激活 worksheet ws = wb.active # 数据可以直接分配

python通过openpyxl操作excel

python 对Excel操作常用的主要有xlwt.xlrd.openpyxl ,前者xlwt主要适合于对后缀为xls比较进行写入,而openpyxl主要是针对于Excel 2007 以上版本进行操作,也就是对后缀为xlsx进行操作. Excel 主要有三大元素,工作簿,Sheet 页,单元格,一个工作簿可以包含多个Sheet页面,而Sheet页由N多个单元格组成,而单元格主要用来存储数据: 一.安装插件 pip install openpyxl 二.创建Excel文件 操作excel之前,首先

使用openpyxl操作Excel

删除列数据 使用openpyxl库操作Excel,可以删除指定的列 import openpyxl file_path = r"C:\Users\Desktop\test.xlsx" wb = openpyxl.load_workbook(filename) # 读取Excel文件 ws = wb.active # 激活Excel ws.delete_cols(4) # 删除第4列数据 ws.delete_cols(3) # 删除第3列数据 wb.save(file_path) # 保

用python库openpyxl操作excel,从源excel表中提取信息复制到目标excel表中

现代生活中,我们很难不与excel表打交道,excel表有着易学易用的优点,只是当表中数据量很大,我们又需要从其他表册中复制粘贴一些数据(比如身份证号)的时候,我们会越来越倦怠,毕竟我们不是机器,没法长时间做某种重复性的枯燥操作.想象这样一个场景,我们有个几千行的表要填,需要根据姓名输入其对应的身份证号,但之前我们已经做过一个类似的表,同样的一些人的姓名跟身份证号是完整的,那么我们就需要通过一个个查找姓名,然后把身份证号码复制到我们当前要做的表里去. 当我日复一日重复着这些操作的时候,我都很想有

openpyxl操作excel表格

1.openpyxl 只支持打开.xlsx格式,其他excel类库基本也是 2.不能这里的工作面板直接右键新建表格,必须到文件夹下面去新建,可以把在别的目录新建的表格直接复制到当前目录下 3.从表格中获取到的数据,数字类型仍是数值,其他内容都是字符串类型 from openpyxl import load_workbook """ 1.openpyxl 只支持打开.xlsx格式,其他excel类库基本也是 2.不能这里的工作面板直接右键新建表格,必须到文件夹下面去新建,可以把

python操作excel (openpyxl)

最近看到好几次群里有人问xlwt.wlrd的问题,怎么说呢,如果是office2007刚出来,大家用xlsx文件用不习惯,还可以理解,这都10年过去了喂,就算没有进化到office2016,还在用office2003的有点说不过去吧.有人可以用xlsx保存为xls啊!--故意多做几步操作,目的呢?为了兼容?兼容古老的office2003?而且,既然都用python来操作excel了,还要手动保存一遍文件,这是神马思路? 所以,我还是觉得,应该放弃xls而转型xlsx.所以才有了这篇文章--xlw

Python操作excel的几种方式--xlrd、xlwt、openpyxl

openpyxl xlrd xlwt 在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中行数和列数有此限制),这对于实际应用还是不够的.为此经过一番寻找发现了一个支持07/10/13版本Excel的openpyxl,虽然功能很强大,但是操作起来感觉没有xlwt方便.下面分别说下几个模块的常用操作. xlrd xlrd是用来从Excel中读写数据的,但我平常只用它进行读操作,写操作会遇到些问

Python openpyxl、pandas操作Excel方法简介与具体实例

本篇重点讲解windows系统下 Python3.5中第三方excel操作库-openpyxl: 其实Python第三方库有很多可以操作Excel,如:xlrd,xlwt,xlwings甚至注明的数据分析模块Pandas也提供pandas.read_excel.pandas.DataFrame.to_excel功能. 那么openpyxl的库有哪些优缺点呢: 优势: 1.openpyxl提供对pandas的dataframe对象完美支持: 2.openpyxl支持后台静默打开excel文件: 3

Python利用openpyxl来操作Excel,一看包你会!

自动化的工作是为了从繁琐重复的劳动中挣脱出来,把精力用在数据分析上.自动化方面python是在好不过了,不过既然要提交报表, 就不免要美观什么的.pandas虽然很强大,但是无法对Excel完全操作,现学vba有点来不及.于是就找到这个openpyxl包,用python来修改Excel.如下所示: from openpyxl import load_workbook from openpyxl.styles import colors, Font, Fill, NamedStyle from o