Python对Excel操作详解

文档摘要:

本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。

关键字:

Python、Excel、xlrd、xlwt、xlutils、TCl、tcom

1 Python简介

Python是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块。

与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

2 Python安装

Python目前的版本已经更新到3.4.0,本文使用的版本为2.7.5,所有的版本都可以在python官网http://www.python.org/下载,至于2.x和3.x版本的具体区别也可以在官网查看。

从官网下载了python 2.7.5安装文件python-2.7.5.msi后,直接双击就可以安装python了,可以选择安装路径,我改为C:\Python2.7.5\了,然后一路next就完成安装了,安装完成后在C盘下就多了一个文件夹Python2.7.5。

Python也是一种实时交互语言,可以通过自带的IDLE编写python语句并反馈回显信息,可以通过图1方式调出python IDLE。

图1

也可以在cmd下输入python,但默认情况下python并没有添加到windows环境变量中,导致在cmd下输入python的时候出现提示“'python'不是内部或外部命令,也不是可运行的程序或批处理文件。”,windows下可执行文件在运行时首先在当前目录下搜索,因为进入cmd下默认路径一般为C:\Documents and Settings\Administrator>,而在这个路径下是找不到python的,所以提示出错,可以进入到python安装目录下,然后执行python就可以进入交互命令行模式下。如果懒的每次都进入python安装,此时需要将python安装路径添加到系统变量中,然后windows在执行命令的时候会去环境变量中查找路径,具体配置如图2所示,在Path中添加python的安装路径“C:\Python2.7.5;”,主要路径后面要加”;”分号表面这是一个路径的结束,此时无论在哪个路径下都可以执行python调出交互命令行。

图2

3 Python语法入门

在Python简介中提到Python是一种直译式电脑编程语言,体现在语法中,如要将变量a赋值为1,Tcl使用命令%set a 1(本文中为了区分Tcl和Python的命令,Tcl命令前会加上“%”,否则默认为Python命令),在python中命令为a = 1,输出a的值可以直接输入a,也可以通过print语句输出a的值,命令为print a(在python 3.0以后版本中,print不再是一个语句,而是一个函数,所以如果想要输出a,用法为print(a))。在Tcl中求1和10的和或者变量之间的加减乘除运算需要使用expr命令,在python则直接写表达式就可以了,如图3所示。

图3

Python很多功能都是靠模块实现的,比如ftplib模块负责ftp功能的实现,math模块囊括了基本数学公式,如果我们想要引用这些模块,需要使用命令import模块名称,如import ftplib和import math。如果想使用math模块中的函数floor,可以使用命令math.floor(28.5),语法为“模块.函数”,如果想要直接使用floor函数,必须提前引用,命令为from math import floor,那样就可以直接使用命令floor(28.5)了。如果觉得floor这个函数名称太长了或者不好记忆,可以通过变量引用函数,如f = math.floor,这样变量f就充当了math.floor的功能了。上面提到的模块ftplib和math都是在python安装的时候已经安装了,而接下来重点介绍的xlrd、xlwt、xlutils模块都不是随python安装的。需要手动下载安装,第5节会详细介绍模块的安装。

当成功导入了某个模块后,可以通过函数dir (模块名)查看这个模块包含哪些函数,如果对某个函数的作用不了解,可以通过help函数查看,如help(math.pow)

本文只是带领大家入门,python的其他语法可以参考其它资料学习。

4 Tcl对Excel操作

在使用python对excel操作之前搜索过如何通过Tcl对excel操作,Tcl本身没有提供对excel操作的命令,可以通过tcom外部包来调用excel的接口实现,但是个人感觉实现起来比较麻烦,msdn网站上虽然提供了excel的接口,但示例都是针对VB脚本语言写的,Tcl如果想要调用的话还需要转换,如下是一段简单的Tcl代码展示如何通过tcom对excel进行操作,但也花了本人不少时间琢磨。

# 加载tcom包

package require tcom

set filename "F:/1.xls"

# 创建com实例,打开工作表,下面四句都是套路

set excel [::tcom::ref createobject "Excel.Application"]

set workbooks [$excel Workbooks]

set workbook [$workbooks Open $filename]

set worksheets [$workbook Worksheets]

# "sheet1"为sheet的名称

set worksheet [$worksheets Item "sheet1"]

# 创建单元格对象

set cells [$worksheet Cells]

# 给单元格B2赋值为“hsdf”

$cells Item 2 B "hsdf"

# 获取sheet的个数并赋值给sheetCount

set sheetCount [$worksheets Count]

# 获取A1至A15单元的范围对象

set range [$worksheet Range A1 A15]

# 给A1至A15单元赋值

$range Value2 "abcdefg"

# 获取A1至A15的值,并赋值给A,A是一个列表list

set A [$range Value2]

# 设置单元的背景色

set interior [$range Interior]

$interior Color [expr 0x00FFE0]

# 设置单元的前景色和字体大小、加粗、斜体、字体

set font [$range Font]

$font Color [expr 0xFF0000]

$font Bold 1

$font Size 10

$font Italic 0

$font Name "华文行楷"

# 设置单元格的宽度为自动调整

set entire [$range EntireColumn]

$entire AutoFit

# 保存文档

$workbook Save

# 显示Excel

$excel Visible 1

5 xlwt和xlrd模块的安装

Python也是通过导入外部模块来实现对excel的操作,xlrd负责对excel的读取,xlwt负责对excel的写入,xlutils依赖于xlrd和xlwt,可以复制excel文件。这三个包都可以在网站http://www.python-excel.org/下载。本文使用的xlrd版本为0.8.0,xlwt版本为0.7.5。从网上下载好xlrd和xlwt后,解压缩到C:\Python2.7.5\Lib下,此时在命令行下输入import xlrd或者import xlwt,会出现提示ImportError: No module named xlwt,这表明还没有安装xlwt模块。

python 导入一个模块的过程要求有一个叫做“路径搜索”的操作过程,即是在文件系统“预先设定的区域”查找模块文件以加载模块的过程。这个预先设定的区域其实是python搜索路径的一组目录。这个目录保存在sys.path中,如果你想知道python导入模块时会在哪些路径搜索模块,你可以执行以下命令查看搜索路径目录:

>>> import sys

>>> sys.path

['D:\\python\\shell\\2.7.5','C:\\Python2.7.5\\Lib\\idlelib','C:\\Python2.7.5\\lib\\site-packages\\setuptools-1.3-py2.7.egg','C:\\Python2.7.5\\lib\\site-packages\\xlutils-1.7.0-py2.7.egg','C:\\Windows\\system32\\python27.zip','C:\\Python2.7.5\\DLLs','C:\\Python2.7.5\\lib','C:\\Python2.7.5\\lib\\plat-win', 'C:\\Python2.7.5\\lib\\lib-tk','C:\\Python2.7.5','C:\\Python2.7.5\\lib\\site-packages','C:\\Python2.7.5\\lib\\site-packages\\win32','C:\\Python2.7.5\\lib\\site-packages\\win32\\lib','C:\\Python2.7.5\\lib\\site-packages\\Pythonwin']

在sys.path中找到一个路径为'C:\\Python2.7.5\\lib',所以我们把模块解压缩到这个目录下。命令>>>sys.path.append('C:\\Python2.7.5\\lib')在最后添加一个目录,sys.path.insert(0,' C:\\Python2.7.5\\lib ')在第一位插入一个目录。

解压缩完成并放在正确目录后,在cmd下进入package当前目录,然后输入命令“C:\Python2.7.5\Lib\xlrd-0.8.0>python setup.py install”,安装完成后可以输入import xlrd,dir(xlrd)来确认是否已经安装正确。

6 xlrd简单使用方法

>>>import xlrd

>>>excel = xlrd.open_workbook("C:\Users\HuZhangdong\Desktop\ASB测试床环境信息图.xls")#打开文件并将对象存储到excel中

>>>sheet = excel.sheet_by_index(0) #通过索引读取sheet对象,第一个sheet的索引为"0"

>>>row_3 = sheet.row_values(2) #读取第3行的所有数据,并以列表的形式存储到row_3中

>>>col_3 = sheet.col_values(2) #读取第3列的所有数据,并以列表list的形式存储到col_3中

>>>cell_12_7 = sheet.cell_value(11,6) #读取第12行第7列的数据,并存储到cell_12_7中

>>>cell_11_11 = sheet.cell(10,10).value #读取第11行第11列的数据,并存储到cell_11_11中

>>>cell_7_8 = sheet.row(6)[7].value #读取第7行第8列的数据

>>>cell_7_8 = sheet.cel(7)[6].value #读取第8列第7行的数据

>>>num_rows = sheet.nrows #读取sheet的总行数

>>>num_cols = sheet.ncols #读取sheet的总列数

基本上面的命令已经可以满足目前对excel读取的操作了,接下给大家讲解xlwt的用法。

7 xlwt简单使用方法

#-*- coding: UTF-8 -*- #设置编码格式为utf-8

import os,xlwt,datetime #导入模块

data =xlwt.Workbook() #新建一个Workbook

sheet = data.add_sheet(u"sheet") #新建一个sheet,名称为'sheet'

style1 = xlwt.XFStyle() #创建格式style1

style2 = xlwt.XFStyle()

style3 = xlwt.XFStyle()

#设置字体格式

font1 = xlwt.Font() #创建font1

font1.name = 'Times New Roman' #字体为'Times New Roman'

font1.bold = True #加粗

font1.colour_index = 2 #字体颜色为红色,0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan

font1.underline = xlwt.Font.UNDERLINE_DOUBLE #下划线类型,UNDERLINE_DOUBLE代表双下划线,另外还有UNDERLINE_NONE, UNDERLINE_SINGLE, UNDERLINE_SINGLE_ACC, UNDERLINE_DOUBLE, UNDERLINE_DOUBLE_ACC

font1.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT #设置上标

font1.family = xlwt.Font.FAMILY_ROMAN

font1.height = 0x190 #0x190是16进制,换成10进制为400,然后除以20,就得到字体的大小为20

style1.font = font1 #将创建的font1字体格式应用到style1上

font2 = xlwt.Font() #创建font2

font2.name = "Algerian" #字体为'Algerian'

font2.colour_index = 3 #字体颜色为绿色

font2.italic = True #斜体

font2.struck_out = True #删除线

font2.height = 0x258 #字体大小为30

style2.font = font2 #将创建的font2字体格式应用到style2上

#设置列宽

sheet.col(0).width = 6000

sheet.col(1).width = 12000

sheet.set_col_default_width(2)

#设置单元格对齐方式

alignment = xlwt.Alignment() #创建alignment

alignment.horz = xlwt.Alignment.HORZ_CENTER #设置水平对齐为居中,May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED

alignment.vert = xlwt.Alignment.VERT_CENTER #设置垂直对齐为居中,May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED

style3.alignment = alignment #应用alignment到style3上

#插入时间

style3.num_format_str = 'YYYY-MM-DD HH:MM:SS' #设置时间格式

sheet.write(1,1,datetime.datetime.now(),style3) #在第2行第2列插入当前时间,格式为style3

#设置单元格背景颜色

pattern_yellow = xlwt.Pattern() #创建pattern_yellow

pattern_yellow.pattern = xlwt.Pattern.SOLID_PATTERN #设置填充模式为全部填充

pattern_yellow.pattern_fore_colour = 5 #设置填充颜色为yellow黄色

style1.pattern = pattern_yellow #把设置的pattern应用到style3上

pattern_red = xlwt.Pattern() #创建pattern_red

pattern_red.pattern = xlwt.Pattern.SOLID_PATTERN #设置填充模式为全部填充

pattern_red.pattern_fore_colour = 2 #设置填充颜色为red红色

style2.pattern = pattern_red #把设置的pattern应用到style4上

#设置单元格边框

borders = xlwt.Borders() #创建borders

borders.left = xlwt.Borders.DASHED #设置左边框的类型为虚线May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.

borders.right = xlwt.Borders.THIN #设置右边框的类型为细线

borders.top = xlwt.Borders.DOTTED #设置上边框的类型为打点的

borders.bottom = xlwt.Borders.THICK #设置底部边框类型为粗线

borders.left_colour = 0x10 #设置左边框线条颜色

borders.right_colour = 0x20

borders.top_colour = 0x30

borders.bottom_colour = 0x40

style1.borders = borders #将borders应用到style1上

style2.borders = borders #将borders应用到style2上

sheet.write(3, 0, 'HuZhangdong', style1) #在第4行第1列写入'HuZhangdong',格式引用style1

sheet.write(4, 0, 'YinMengran' , style2) #在第5行第1列写入'YinMengran',格式引用style2

data.save(u'e:\\3.xls') #保存到e:\\3.xls

函数xlwt.Workbook()只能新建一个excel文档,不能打开一个已经存在的文档,下一章会讲解如何通过xlutils修改一个已经存在的excel文档。

8 xlutils简单使用方法

本章将讲解如何使用xlutils编辑一个已经存在的文档,需要导入xlutils模块,下载地址是http://www.python-excel.org/,模块成功安装后就开始编写脚本吧。

#-*- coding:utf-8 -*- #设置当前编码格式为utf-8

import xlwt #导入xlwt模块

import xlrd #导入xlrd模块

from xlutils.copy import copy #导入import模块的copy函数,接下来就可以直接使用函数copy了。

fileName = "E:\\4.xls"

sheetName = "sheet1"

styleBoldRed = xlwt.easyxf('font: color-index red, bold on') #设置字体,颜色为红色,加粗

oldWb = xlrd.open_workbook(fileName, formatting_info=True) #使用xlrd.open_workbook函数打开文件,formatting_info=True表示保留该文件的格式

newWb = copy(oldWb) #通过copy函数把oldWb copy到newWb,然后通过编辑newWb来实现编辑已经存在的文件。

newWs = newWb.get_sheet(0) #读取第一个sheet

newWs.write(4, 0, "value1",styleBoldRed) #第5行第1列写入值“value1”,格式采用styleBoldRed。

newWs.write(4, 1, "value2",styleBoldRed) #第5行第2列写入值“value2”

newWs.write(4, 2, "value3",styleBoldRed) #第5行第3列写入值“value3”

newWb.save(fileName) #文件保存为"E:\\4.xls"

用python处理excel的基本语法_Python对Excel操作详解相关推荐

  1. python输入文字、成为字典_Python 字典(Dictionary)操作详解

    一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} ...

  2. python使用字典描述学生信息_Python字典(Dictionary)操作详解

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. python变量类型是动态的_python内存动态分配过程详解

    一.前言 大多数编译型语言,变量在使用前必须先声明,其中C语言更加苛刻:变量声明必须位于代码块最开始,且在任何其他语句之前.其他语言,想C++和java,允许"随时随地"声明变量, ...

  4. python开发报表系统详细操作流程_python实现报表自动化详解

    本篇文章将介绍: xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件 ...

  5. python列表的内置方法_Python内置方法详解

    1. 字符串内置方法详解 为何要有字符串?相对于元组.列表等,对于唯一类型的定义,字符串具有最简单的形式. 字符串往往以变量接收,变量名.可以查看所有的字符串的内置方法,如: 1> count: ...

  6. python多进程队列中的队列_python 多进程队列数据处理详解

    我就废话不多说了,直接上代码吧! # -*- coding:utf8 -*- import paho.mqtt.client as mqtt from multiprocessing import P ...

  7. python爬虫代码实例源码_python爬虫及案例详解(附代码)

    安装三大库 1.requests 2.BeautifulSoup 3.lxml 有的网站做了相应的反爬虫,不能用普通方法爬取网站数据. 这里我用python爬取了几个网站的数据,分别存入csv文件,m ...

  8. python 字典程序_Python 字典(Dictionary)操作详解

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = { ...

  9. python列表可以删除和修改吗_Python列表常见操作详解(获取,增加,删除,修改,排序等)...

    本文实例讲述了Python列表常见操作.分享给大家供大家参考,具体如下: 列表是由一系列按特定顺序排列的元素组成的对象.因为列表通常包含多个元素, 所以建议给列表指定一个表示复数的名称. 我们用方括号 ...

最新文章

  1. yolov3 onnx nms
  2. java保留小数_(转)Java保留小数位数的N中方法
  3. ASP.NET MVC 向浏览器发送文件以提供文件下载功能
  4. delphi pdf 转换 html5,Delphi使用Word ActiveX将doc转换为pdf
  5. 伺服步进电机选型软件_关于伺服步进电机的28个问题
  6. java实现随机抽取试题组成试卷
  7. 关于Python异常处理,你需要了解的知识点
  8. 这位博士跑赢“地震波”:提前 10 秒预警宜宾地震!
  9. SQLServer优化二
  10. 北京理工大学计算机学院研究生培养方案,北京理工大学2018版学术型研究生培养方案.PDF...
  11. 前端技术周刊 2019-02-11 Serverless
  12. Algs4-2.1.8元素有三种值时插入排序的复杂度
  13. Qt - 自定义窗口 点击窗口外自动关闭
  14. 移植sqlite3到arm-linux上(AM3352)
  15. 两个小球碰撞速度计算方法
  16. python是面向对象开发_Python开发之路-面向对象
  17. CentOS 7网卡网桥设置
  18. 关于RO、RW、ZI的说明
  19. 琼斯是计算体心立方弹性模量_固体物体第三章习题
  20. 海格里斯HEGERLS托盘式四向穿梭车批发定制|24小时全自动无人化立体仓库批量托盘作业

热门文章

  1. 网站安全在线扫描工具
  2. 查找一个期刊的latex模板(有的期刊不提供latex模板,或者没有说明latex模板去哪里找)
  3. 怎样让git不用每次输入密码_请问如何解决git pull/push每次都要输入密码的问题?...
  4. Leetcode 998
  5. AI绘画 Midjourney
  6. html可向下延伸输入框,转载 div下上自动延伸的
  7. 山东春考计算机专业本科学校排名,山东春考大学本科排名及名单
  8. JS正则表达式 ,reg.test()时,慎重全局查找/.../g属性
  9. 【人民币识别】人民币序列号识别【含GUI Matlab源码 908期】
  10. 在互联网大厂实习之后,我明白了这些事