安装

pip install openpyxl

一个简单的实例:

最初的表格

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import openpyxl
from openpyxl import Workbook
from openpyxl import load_workbook
import datetime file_name='/Users/chichi/Documents/TestStudy/TestExcel/data.xlsx'
wb=load_workbook(file_name)
ws=wb['Sheet1']
#直接根据位置进行赋值
ws['A5']=400
ws['B5']='杨四'
#直接存储Python的时间类型变量
ws['A11'] = datetime.datetime.now()
#cell方法通过输入参数row、column、value来操作单元格
ws.cell(row=6,column=1,value=500)
ws.cell(row=6,column=2,value='程五')
#读取数据
for row in ws.rows: # 返回的row是一个tuple对象
for cell in row:
print 'row: %s column: %s value: %s' % (cell.row,cell.column,cell.value)
# 保存文件
wb.save(file_name)

执行以上代码后的表格:

Excel文档名词解释:

一个Excel表格文件(xlsx)包含一个工作薄(workbook),一个工作薄可以包含多个工作表(worksheets)。用户正在查看的工作表是激活的工作表(active sheet)。

每个工作表都有行和列,行以数字1开始,列以字母A开始。一个工作表由单元格(cell)组成,单元格可以存储数字和字符串

Workbook属性

sheetnames: 返回所有WorkSheet的名字列表,类型为list

worksheets: 返回所有WorkSheet的列表,类型为list

active: 返回当前默认选中的WorkSheet

实例:
test.xlsx  表格如下


file_name='/Users/chichi/Documents/TestStudy/test.xlsx'
wb=load_workbook(file_name)
print(wb.sheetnames)
print(wb.worksheets)
print(wb.active)

执行结果:

python /Users/chichi/Documents/TestStudy/TestOpenpyxl.py
[u'sheet-test2', u'Original Sheet', u'sheet-test1a']
[<Worksheet "sheet-test2">, <Worksheet "Original Sheet">, <Worksheet "sheet-test1a">]
<Worksheet "sheet-test2">
Workbook方法
get_sheet_names(): 同sheetnames
get_active_sheet(): 同active属性
get_sheet_by_name(name):根据名称获取WorkSheet
remove(worksheet): 删除一个WorkSheet,注意是WorkSheet对象,不是名字
save(filename): 保存到文件,记住有写入操作记得保存!!!
file_name='/Users/chichi/Documents/TestStudy/test.xlsx'
wb=load_workbook(file_name)
wb.remove(wb.get_sheet_by_name('sheet-test1a'))
print (wb.get_sheet_names())
print (wb.get_active_sheet())
wb.save(file_name)

执行结果:

[u'sheet-test2', u'Original Sheet']
<Worksheet "Original Sheet">

如何创建一个Workbook对象?

# 利用openpyxl来创建Workbook对象无需新建文件,可以直接实例化一个Workbook对象即可
wb = Workbook()
dest_filename = '/Users/chichi/Documents/TestStudy/test.xlsx'
ws = wb.active
#每个workbook创建后,默认会存在一个worksheet,对默认的worksheet进行重命名
ws.title = "Original Sheet"
#再自行创建一个sheet-test
ws1 = wb.create_sheet("sheet-test1")
#对worksheet进行重命名
ws1.title = "sheet-test1a"
#指定插入worksheet的位置,第一个默认的worksheet 从0开始,在这之前插入sheet-test2
ws2 = wb.create_sheet("sheet-test2", 0)
ws.sheet_properties.tabColor = "1072BA"
# 查看一个workbook中全部的Worksheet的名称,返回值为List
print wb.sheetnames
# 通过遍历方式打印所有的sheetname
for sheet in wb:
print sheet.title
wb.save(filename = dest_filename)

执行结果:

[u'sheet-test2', u'Original Sheet', u'sheet-test1a']
sheet-test2
Original Sheet
sheet-test1a

WorkSheet属性

rows: 返回所有有效数据行,有数据时类型为generator,无数据时为tuple
columns:返回所有有效数据列,类型同rows
max_column:有效数据最大列
max_row:有效数据最大行
min_column:有效数据最小列,起始为1
min_row:有效数据最大行,起始为1
values:返回所有单元格的值的列表,类型为tuple
title:WorkSheet的名称
 
表格如下:

file_name='/Users/chichi/Documents/TestStudy/test.xlsx'
wb=load_workbook(file_name)
ws = wb.active
#打印出所有的单元格的值
for i in ws.rows:
for j in i:
print u"第%s行第%s列的值是%s:" %(j.row,j.column,j.value)
print ws.rows
print ws.columns
print ws.max_column
print ws.max_row
print ws.title print ws.values

执行结果:

第1行第A列的值是name:
第1行第B列的值是password:
第1行第C列的值是None:
第1行第D列的值是None:
第1行第E列的值是一:
第1行第F列的值是五:
第2行第A列的值是abc:
第2行第B列的值是kjklj:
第2行第C列的值是None:
第2行第D列的值是None:
第2行第E列的值是二:
第2行第F列的值是六:
第3行第A列的值是bbb:
第3行第B列的值是jklj:
第3行第C列的值是None:
第3行第D列的值是None:
第3行第E列的值是三:
第3行第F列的值是七:
第4行第A列的值是ccc:
第4行第B列的值是jkjlk:
第4行第C列的值是None:
第4行第D列的值是None:
第4行第E列的值是四:
第4行第F列的值是八:
第5行第A列的值是dddd:
第5行第B列的值是fd:
第5行第C列的值是None:
第5行第D列的值是None:
第5行第E列的值是虽:
第5行第F列的值是影响力:
<generator object _cells_by_row at 0x10cfaef00>
<generator object _cells_by_col at 0x10cfaef00>
6
5
sheet-test2
<generator object values at 0x10cfaef00>

Cell属性

column:所在列,起始为1
row:所在行,起始为1
coordinate: 所在坐标,如'A1'
parent: 所属的WorkSheet
value: 单元格的值 表格如下:


file_name='/Users/chichi/Documents/TestStudy/test.xlsx'
wb=load_workbook(file_name)
ws = wb.active
c1=ws['C7']
c1.value=300
print c1.row
print c1.column
print c1.coordinate
print c1.parent
c2=ws.cell(row=10,column=1,value=10)
print c2.value
wb.save(file_name)

执行结果:

7
C
C7
<Worksheet "sheet-test2">
10
 

如何操作Workbook中的数据?

file_name='/Users/chichi/Documents/TestStudy/test.xlsx'
wb=load_workbook(file_name)
#直接通过worksheet中单元格的位置来获取单元格的值:
ws=wb['sheet-test2']
a = ws["A3"]
print a.value
#对单元格赋值或者修改单元格原有的值
ws["A4"] = ""
print ws["A4"].value
#通过cell属性操作单元格
b = ws.cell(row=6, column=1,value=100)
print b.value

执行结果:

如何一次性读取很多单元格组成的块的数据呢?

file_name='/Users/chichi/Documents/TestStudy/test.xlsx'
wb=load_workbook(file_name)
ws = wb.active
#通过索引切片的方式来获取一组单元格的数据
cell_range = ws["A1":"C3"]
for i in cell_range:
for j in i:
print j.value
# 针对列的切片
cell_range = ws["A":"B"]
print "A列至B列的数据如下:"
for i in cell_range:
for j in i:
print j.value
# 针对行的切片
cell_range = ws["":""]
print "第1行至第2行的数据如下:"
for i in cell_range:
for j in i:
print j.value
# 针对worksheet提供了iter_rows方法来获取一组单元格
for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
for cell in row:
print cell.value

参考:https://www.missshi.cn/api/view/blog/5a001868e519f50d04000350

https://www.jianshu.com/p/ce2ba7caa414

http://blog.topspeedsnail.com/archives/5404

openpyxl读写Excel文件的更多相关文章

  1. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  2. 【转发】Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  3. Python3使用openpyxl读写Excel文件

    Python中常用的操作Excel的三方包有xlrd,xlwt和openpyxl等,xlrd支持读取.xls和.xlsx格式的Excel文件,只支持读取,不支持写入.xlwt只支持写入.xls格式的文 ...

  4. Python使用读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  5. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

  6. [转]用Python读写Excel文件

    [转]用Python读写Excel文件   转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...

  7. python读写Excel文件的函数--使用xlrd/xlwt

    python中读取Excel的模块或者说工具有很多,如以下几种: Packages 文档下载 说明 openpyxl Download | Documentation | Bitbucket  The ...

  8. 用Python读写Excel文件的方式比较

    虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TAB分割的文本文件(TSV),再在Ex ...

  9. MFC vs2012 Office2013 读写excel文件

    近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...

随机推荐

  1. django 下载文件 无法正常打开

    下载文件,无法正常打开,如下图 需手动加后缀名修改文件格式方可正常打开进而能得知文件内容正常如下图,给“下载”文件加上后缀即可得到正常下载的内容 问题整理:(此下载功能采用StreamHttpResp ...

  2. 第三方工具Jdom解析XML

    需要导入的jar包:jdom-2.0.6.jar package com.huawei.xml; import java.io.File;import java.io.FileOutputStream ...

  3. Glow Shader

    [Glow Shader] Glow Shader基于BlurShader来实现.总的来说分为2步: 1.利用BlurShader渲染出BlurTexture. 2.将BlurTexture与SrcT ...

  4. canvas动画--demo

    canvas动画:bubble

  5. Search Quick Union Find(图的存储结构)

    Quick Find:适用于search频繁的情况 每个节点有一个id值,id相同表示两个节点相连通.在union时要将等于某一个id值都改成另一个id值 Quick Union: 适用于union频 ...

  6. 磁盘512n,512e,4k原生磁盘的区别和操作系统支持

    磁盘按照物理扇区大小的不同分为三种512byte原生扇区硬盘(512n),4KB扇区仿真512byte(512E)磁盘,4kB扇区原生磁盘. 首先说物理扇区,扇区是硬盘上最小的读写单位,这个是硬盘决定 ...

  7. 硬盘smart信息读取

    https://blog.csdn.net/cracker_zhou/article/details/73348966

  8. 使用WCF实现消息推送

    1.协议 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...

  9. CodeForces 687B Remainders Game(数学,最小公倍数)

    题意:给定 n 个数,一个数 k,然后你知道一个数 x 取模这个 n 个的是几,最后问你取模 k,是几. 析:首先题意就看了好久,其实并不难,我们只要能从 n 个数的最小公倍数是 k的倍数即可,想想为 ...

  10. 使用electron-packager electron-builder electron-updater 打包vue项目,支持在线更新

    1.如何用electron-packager electron-builder打包vue项目,打包成桌面程序. 步骤一. 执行npm run build 打包你的vue项目. 打包成功后,生成dist ...