python3操作Excel openpyxl模块的使用

python 与excel

安装模块

本例子中使用的模块为:

openpyxl

版本为2.4.8

安装方法请参看以前发表的文章(Python 的pip模块安装方法)

Python处理Excel表格

使用模块:openpyxl(2.4.8)

基本使用方法

1.首先导入模块:import openpyxl

2.打开一个已经存在的excel文件:

wb=openpyxl.load_workbook(‘example.xlsx‘)

(文件和脚本放在同一个目录下,如果不是的话需要加上路径

wb=wpenpyxl.load_workbook(r‘c:\maxingpython\example.xlsx‘))

此时wb是一个workbook对象,表示的是整个Excel文件,类似于file对象表示一个文本文件。

3.获取Excel文件中具体的表:

  • sheet=wb.get_sheet_name(‘Sheet1‘)#根据表名获取
  • sheet=wb[‘Sheet1’]#更简洁的方法
  • sheet=wb.get_active_sheet()#获取当前激活的表(即打开Excel默认打开的表)
  • sheet=wb.active#通过属性获取当前激活的表

Sheet.title可以得到表的名字。

4.获取表中的行与列

  • sheet.rows
  • sheet.columns

注意这里获取的行与列是一个生成器对象

>>> sheet.rows

5.获取表的总行数与总列数

  • 总行数:len(list(sheet.rows)) 总列数:len(list(sheet.columns))
  • 直接调用属性:sheet.max_row;sheet.max_column

6.获取单元格对象

cell=sheet[‘A1’]#获取了一个单元格对象

cell.value#获取该单元格的值

这种方法是使用Excel种默认的行(数字)与列(字母)的形式来获取对应的单元格。

另外一种方式是直接指定命名参数:

  • cell=sheet.cell(row=2,column=2)
  • cell.value#获取单元格的值
  • cell.row#获取相应的行
  • cell.column#获取相应的列
  • cell.cordinate#获取相应的坐标

例子

>>> cell=sheet.cell(row=2,column=2)

>>> cell.value

‘苹果‘

>>> cell.row

2

>>> cell.column

‘B‘

>>> cell.coordinate

‘B2‘

这种方法都是用数字来表示行与列(第一行为1不是0

这两种工具互转化:

>>> openpyxl.utils.cell.column_index_from_string(‘A‘)

1

>>> openpyxl.utils.cell.column_index_from_string(‘AC‘)

29

>>> openpyxl.utils.cell.get_column_letter(1)

‘A‘

>>> openpyxl.utils.cell.get_column_letter(29)

‘AC‘

>>>

7.获取某一个区域的数据

>>> sheet[‘A1:C3‘]

((<cell ‘sheet1‘.a1="">, <cell ‘sheet1‘.b1="">, <cell ‘sheet1‘.c1="">), (<cell ‘sheet1‘.a2="">, <cell ‘sheet1‘.b2="">, <cell ‘sheet1‘.c2="">), (<cell ‘sheet1‘.a3="">, <cell ‘sheet1‘.b3="">, <cell ‘sheet1‘.c3="">))

>>> type(sheet[‘A1:C3‘])

<class ‘tuple‘="">

>>> import pprint#上面打印太乱,导入漂亮打印模块

>>> pprint.pprint(sheet[‘A1:C3‘])

((<cell ‘sheet1‘.a1="">, <cell ‘sheet1‘.b1="">, <cell ‘sheet1‘.c1="">),

(<cell ‘sheet1‘.a2="">, <cell ‘sheet1‘.b2="">, <cell ‘sheet1‘.c2="">),

(<cell ‘sheet1‘.a3="">, <cell ‘sheet1‘.b3="">, <cell ‘sheet1‘.c3="">))

注意到sheet[‘A1:C3‘]获取到的是一个元组组成的元组。

8.获取所有的表名

>>> wb.get_sheet_names()

[‘my first sheet‘]

返回的是一个列表。

向表格中写入数据

1.新建一个Excel文件

>>> from openpyxl import Workbook

>>> wb=Workbook()

>>> wb

这样便创建了一个Workbook对象,实际上还没有生成Excel文件,要实际生成该Excel文件需要调用save函数之后。

默认Workbook对象将创建一张表“sheet”

>>> wb.active

<worksheet ‘sheet‘="">

>>> sheet=wb.active

>>> sheet.title=‘my first sheet‘

>>> sheet.title

‘my first sheet‘

通过sheet.title属性可以修改表名。

2.保存

>>> wb.save(‘test.xlsx‘)

此时在工作目录下才会生成test.xlsx文件。

3.增加及删除表

>>> wb.create_sheet()

<worksheet ‘sheet1‘="">

>>> wb.get_sheet_names()

[‘Sheet‘, ‘Sheet1‘]

>>> wb.create_sheet(‘names‘)

<worksheet ‘names‘="">

>>> wb.get_sheet_names()

[‘Sheet‘, ‘Sheet1‘, ‘names‘]

>>> wb.create_sheet(index=0,title=‘first tab‘)

<worksheet ‘first="" tab‘="">

>>> wb.get_sheet_names()

[‘first tab‘, ‘Sheet‘, ‘Sheet1‘, ‘names‘]

>>> wb.create_sheet(index=len(wb.get_sheet_names()),title=‘last tab‘)

<worksheet ‘last="" tab‘="">

>>> wb.get_sheet_names()

[‘first tab‘, ‘Sheet‘, ‘Sheet1‘, ‘names‘, ‘last tab‘]

>>> wb.remove_sheet(wb[‘first tab‘])

>>> wb.get_sheet_names()

[‘Sheet‘, ‘Sheet1‘, ‘names‘, ‘last tab‘]

4.向单元格中写入信息

>>> sheet[‘A1‘]=‘Hello world!‘

>>> sheet.cell(row=2,column=2).value=‘张三‘

>>> sheet[‘B2‘].value

‘张三‘

5.单元格字体风格

首先要导入相应的函数:

from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font

默认设置如下:

>>> font=Font(name=‘Calibri‘,

... size=11,

... bold=False,

... italic=False,

... vertAlign=None,

... underline=‘none‘,

... strike=False,

... color=‘FF000000‘)

>>> fill=PatternFill(fill_type=None,

... start_color=‘FFFFFFFF‘,

... end_color=‘FF000000‘)

>>> border=Border(left=Side(border_style=None,

... color=‘FF000000‘),

... right=Side(border_style=None,

... color=‘FF000000‘),

... top=Side(border_style=None,

... color=‘FF000000‘),

... bottom=Side(border_style=None,

... color=‘FF000000‘),

... diagonal=Side(border_style=None,

... color=‘FF000000‘),

... diagonal_direction=0,

... outline=Side(border_style=None,

... color=‘FF000000‘),

... vertical=Side(border_style=None,

... color=‘FF000000‘),

... horizontal=Side(border_style=None,

... color=‘FF000000‘)

... )

>>> alignment=Alignment(horizontal=‘general‘,

... vertical=‘bottom‘,

... text_rotation=0,

... wrap_text=False,

... shrink_to_fit=False,

... indent=0)

>>> number_format=‘General‘

>>> protection=Protection(locked=True,

... hidden=False)

>>>

例子:

为单元格设置样式

>>> cell1=sheet[‘A1‘]

>>> cell2=sheet[‘A2‘]

>>> ft1=Font(color=colors.RED)

>>> ft2=Font(color=‘00FF00‘,size=30)

>>> cell1.font=ft1

>>> cell2.font=ft2

复制样式:

>>> fromopenpyxl.stylesimportFont

>>> fromcopyimportcopy

>>>

>>> ft1=Font(name=‘Arial‘, size=14)

>>> ft2=copy(ft1)

>>> ft2.name=‘Tahoma‘

>>> ft1.name‘Arial‘

>>> ft2.name‘Tahoma‘

>>> ft2.size# copied from the14.0

自定义样式:

>>> from openpyxl.styles import NamedStyle, Font, Border, Side

>>> highlight = NamedStyle(name=‘highlight‘)

>>> highlight.font = Font(bold=True, size=20)

>>> bd = Side(style=‘thick‘, color=‘000000‘)

>>> highlight.border = Border(left=bd, top=bd, right=bd, bottom=bd)

创建好后便可以应用到workbook了

>>> wb.add_named_style(highlight)#第一步

>>> ws[‘A1‘].style = highlight#第二步

Once registered assign the style using just the name:

>>> ws[‘D5‘].style = ‘highlight‘#以后就可以直接调用字符串形式了

7.合并与拆分单元格

import openpyxl

wb=openpyxl.load_workbook(‘two.xlsx‘)

sheet=wb.active

sheet.merge_cells(‘A1:A2‘)

wb.save(‘three.xlsx‘)

同理拆开单元格便是sheet.unmerge_cells(‘A1:A2‘),但是在交互式环境中可以,写在py文件中就会报错,不知什么原因。

时间: 2024-08-28 17:04:07

python3操作Excel openpyxl模块的使用的相关文章

Python3操作Excel

本文利用Python3爬虫抓取豆瓣图书Top250,并利用xlwt模块将其存储至excel文件,图片下载到相应目录.旨在进行更多的爬虫实践练习以及模块学习. 工具 1.Python 3.5 2.BeautifulSoup.xlwt模块 开始动手 首先查看目标网页的url: https://book.douban.com/top250?start=0, 然后我尝试了在代码里直接通过字符串连接仅改变"start="后面的数字的方法来遍历所有的250/25 = 10页内容,但是后来发现不行,

python3操作Excel (一)

#第一篇:##openpyxl 模块使用: 安装:pip install openpyxl excel表中有图像,需要安装pillow库.pip install Pillow 代码: from openpyxl import Workbook wb = Workbook() # grab the active worksheet ws = wb.active # Data can be assigned directly to cells ws['A1'] = 42 # Rows can als

[Python3]读写Excel - openpyxl库

什么是openpyxl openpyxl是一个第三方的pythonexcel读写库,支持Excel2010 xlsx/xlsm/xltx/xltm文件格式. openpyxl提供哪些能力? excel的基本读写能力 与pandas和numpy无缝链接能力 excel里图表管理 excel单元格注释管理 在本节我们主要分享什么? 主要分享openpyxl的excel读写功能.提供常用的代码实例. 对于图表.注释管理.pandas和numpy综合使用不在本节内容讲解范围内,有兴趣的朋友可以自己去研究

python操作excel (openpyxl)

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

python操作Excel(模块xlrd)

#!/usr/bin/env python3 # -*-coding:utf-8-*- # __author__: hunter import xlrd import unittest class Data_excel(unittest.TestCase): file_addrec = 'D:/hunter_/interfaceTest/interface/tool/demo.xlsx' # 定义全局变量,damo.xlsx数据维护Excel的路径文件 def open_excel(self,

Python操作Excel表格,xlwt模块的使用

Python可以操作Excel的模块不止一种,我习惯使用的写入模块是xlwt(一般都是读写模块分开的) 按照模块使用pip install xlwt 就行了,很常规的方式 直接进代码解析,本文源码 wk = xlwt.Workbook(encoding="utf-8") sheet_test = wk.add_sheet("test") 第一句:创建一个工作簿,设置编码格式为"utf-8",默认格式是ASCII,为了方便写入中文,一般都要设置成U

openpyxl模块(excel操作)

openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档.其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能. 安装openpyxl模块 pip3 install openpyxl openpyxl基本用法 想要操作Excel首先要了解Excel 基本概念,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操作excel的几种方式--xlrd、xlwt、openpyxl

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