最新消息:学生作文网,您身边的作文指导专家!

http://pypi.python.org/pypi/xlrd3/

小学作文 zuowen 2浏览

【 – 小学作文】

篇一:《python中xlwt和xlrd库使用分析》

python中使用xlrd、xlwt操作excel表格详解

投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-01-29 我要评论

这篇文章主要介绍了python中使用xlrd、xlwt操作excel表格详解,python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库,需要的朋友可以参考下

最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需。主要记录使用过程的常见问题及解决。

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载https://pypi.python.org/pypi。下面分别记录python读和写excel. python读excel——xlrd

这个过程有几个比较麻烦的问题,比如读取日期、读合并单元格内容。下面先看看基本的操作:

首先读一个excel文件,有两个sheet,测试用第二个sheet,sheet2内容如下:

python 对 excel基本的操作如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14 # -*- coding: utf-8 -*- import xlrd import xlwt from datetime import date,datetime def read_excel(): # 打开文件

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35 workbook = xlrd.open_workbook(r'F:\demo.xlsx') # 获取所有sheet print workbook.sheet_names() # [u'sheet1', u'sheet2'] sheet2_name = workbook.sheet_names()[1] # 根据sheet索引或者名称获取sheet内容 sheet2 = workbook.sheet_by_index(1) # sheet索引从0开始 sheet2 = workbook.sheet_by_name('sheet2') # sheet的名称,行数,列数 print sheet2.name,sheet2.nrows,sheet2.ncols

# 获取整行和整列的值(数组)

rows = sheet2.row_values(3) # 获取第四行内容

cols = sheet2.col_values(2) # 获取第三列内容

print rows

print cols

# 获取单元格内容

print sheet2.cell(1,0).value.encode('utf-8')

print sheet2.cell_value(1,0).encode('utf-8')

print sheet2.row(1)[0].value.encode('utf-8')

# 获取单元格内容的数据类型

print sheet2.cell(1,0).ctype

if __name__ == '__main__':

read_excel()

运行结果如下:

那么问题来了,上面的运行结果中红框框中的字段明明是出生日期,可显示的确实浮点数。好的,来解决第一个问题:

1、python读取excel中单元格内容为日期的方式

python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype:

?

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error 即date的ctype=3,这时需要使用xlrd的xldate_as_tuple来处理为date格式,先判断表格的ctype=3时xldate才能开始操作。现在命令行看下:

?

1

2

3

4

5

6

7

8

9

10 >>> sheet2.cell(2,2).ctype #1990/2/22 >>> sheet2.cell(2,1).ctype #24 >>> sheet2.cell(2,0).ctype #小胖 >>> sheet2.cell(2,4).ctype #空值(这里是合并单元格的原因) >>> sheet2.cell(2,2).value #1990/2/22

33656.0 12

13 >>> xlrd.xldate_as_tuple(sheet2.cell_value(2,2),workbook.datemode) 14

15 (1992, 2, 22, 0, 0, 0)

>>> date_value =

xlrd.xldate_as_tuple(sheet2.cell_value(2,2),workbook.datemode)

>>> date_value

(1992, 2, 22, 0, 0, 0)

>>> date(*date_value[:3])

datetime.date(1992, 2, 22)

>>> date(*date_value[:3]).strftime('%Y/%m/%d')

'1992/02/22'

即可以做下简单处理,判断ctype是否等于3,如果等于3,则用时间格式处理: ?

if (sheet.cell(row,col).ctype == 3): date_value =

xlrd.xldate_as_tuple(sheet.cell_value(rows,3),book.datemode)

date_tmp = date(*date_value[:3]).strftime('%Y/%m/%d')

那么问题又来了,上面 sheet2.cell(2,4).ctype 返回的值是0,说明这个单元格的值是空值,明明是合并的单元格内容"好朋友",这个是我觉得这个包功能不完善的地方,如果是合并的单元格那么应该合并的单元格的内容一样,但是它只是合并的第一个单元格的有值,其它的为空。

?

1 >>> sheet2.col_values(4) 2

3 [u'\u5173\u7cfb', u'\u597d\u670b\u53cb', '', u'\u540c\u5b66', '', '', 4

5

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22 u'\u4e00\u4e2a\u4eba', ''] >>> for i in range(sheet2.nrows): print sheet2.col_values(4)[i] 关系 好朋友 同学 一个人

>>> sheet2.row_values(7)

[u'\u65e0\u540d', 20.0, u'\u6682\u65e0', '', '']

>>> for i in range(sheet2.ncols):

print sheet2.row_values(7)[i]

无名

20.0

暂无

>>>

2、读取合并单元格的内容

这个是真没技巧,只能获取合并单元格的第一个cell的行列索引,才能读到值,读错了就是空值。

即合并行单元格读取行的第一个索引,合并列单元格读取列的第一个索引,如上述,读取行合并单元格"好朋友"和读取列合并单元格"暂无"只能如下方式:

?

篇二:《Python execl介绍》

13.3 读写 Excel 文件

本节介绍如何使用 xlrd, xlwt 库读写 Excel 文件,使用这些库的好处在于它不需要使用 COM 接口驱

动 Microsoft Excel,也就是说你不需要安装微软的 Office 套件也可以操作 Excel 文件。 xlrd 库的下载地址:

xlwt 库的下载地址:

xlutils 库的下载地址:

英文帮助文档: 试读版 ? Cell :通过 Worksheet.write 或者 Row.write 方法可以直接写某个单元格

{http://pypi.python.org/pypi/xlrd3/}.

下面是一个简单的例子:

? write_xls.py

演示写 Excel 文件

1 # -*- coding: utf-8 -*-

2 import numpy as np

3 from xlwt import *

4

5 book = Workbook()

6 sheet1 = book.add_sheet(u'随机数')

7 head = ["normal", "power", "gamma", "SUM"]

8 N = 100

9 data = np.vstack([

10 np.random.normal(size=N),

11 np.random.power(a=1.0,size=N),

12 np.random.gamma(0.9,size=N)

13 ])

14 # 创建对齐配置

15 al = Alignment()

16 al.horz = Alignment.HORZ_CENTER

17 al.vert = Alignment.VERT_CENTER

18 # 创建边框配置

19 borders = Borders()

20 borders.bottom = Borders.THICK

21 # 创建样式

22 style = XFStyle()

23 style.alignment = al

24 style.borders = borders

25 # 获得第 0 行

26 row0 = sheet1.row(0)

27 # 将标题写入第 0 行,使用所创建的样式

28 for i, text in enumerate(head):

29 row0.write(i, text, style=style)

30 # 写入随机数

31 for i, line in enumerate(data):

32 for j, value in enumerate(line):

33 sheet1.write(j+1, i, value)

34 # 写求和公式,注意公式中的单元格下标从 1 开始计数

35 for i in xrange(N):

36 sheet1.row(i+1).set_cell_formula(

37 3, Formula("sum(A%s:C%s)" % (i+2, i+2)), calc_flags=1)

38

39 # 设置 4 列的宽度

40 for i in xrange(4):

41 sheet1.col(i).width = 4000

42 # 设置第 0 行的高度

296 第 13 章 数据和文件用 Python 做科学计算 babyself1987@gmail.com 试读版 43 sheet1.row(0).height_mismatch = 1

44 sheet1.row(0).height = 1000

45 book.save("tmp.xls")

程序的输出文件如图13.3所示。程序中除了将数组写入 Excel 文件之外,还演示了各种属性的配置:

? 通过 write 方法的 style 关键字指定单元格的样式,样式的创建比较麻烦,但也很直观,通过分

别创建 Aligment、Borders 等对象配置样式的各个属性,然后创建 XFStyle 对象引用各种配置

? 通过创建 Formula 可以将 Excel 的公式写入文档

? 通过设置 Row 和 Column 对象的 width 和 height 等属性设置行和列的宽度和高度 图 13.3 – 用 xlwt 输出的 Excel 文件

xlwt 的 Utils 子库中有些经常会用的辅助函数:

? col_by_name : 将列名转换为列的编号,例如将"C" 转换为 2

? cell_to_rowcol : 将单元格的字符串表达变换为行列编号,它返回一个 4 个元素的元组:(行编

号, 列编号, 行是否为绝对坐标, 列是否为绝对坐标)

? cell_to_rowcol2 : 和 cell_to_rowcol 类似,但是只返回编号信息

? rowcol_to_cell : 和 cell_to_rowcol 相反,将编号变换为字符串表达

? cellrange_to_rowcol_pair : 将字符串表示的范围变换为一个 4 元元组:(起始行号, 起始列号,

结束行号, 结束列号)

? rowcol_pair_to_cellrange : 和 cellrange_to_rowcol_pair 相反

下面是几个例子:

>>> from xlwt import Utils

>>> Utils.cell_to_rowcol("C4")

(3, 2, False, False)

>>> Utils.cell_to_rowcol("C8"){http://pypi.python.org/pypi/xlrd3/}.

(7, 2, False, False)

13.3 读写 Excel 文件 297用 Python 做科学计算 babyself1987@gmail.com 试读版 >>> Utils.cell_to_rowcol2("C8")

(7, 2)

>>> Utils.cell_to_rowcol("$C$8")

(7, 2, True, True)

>>> Utils.rowcol_to_cell(200,100)

'CW201'

>>> Utils.rowcol_to_cell(200,100, row_abs=True, col_abs=True)

'$CW$201'

13.3.2 读 Excel 文件

读 Excel 文 件 需 要 使 用 xlrd 库, 下 面 的 程 序 读 入 上 节 输 出 的 tmp.xls 文 件, 因 此 请 先 运 行

write_xls.py 生成 tmp.xls 之后再运行下面的程序。

xlrd 不能直接读取 xlwd 输出的公式单元格,需要先用 Excel 打开文档并保存之后才能用 xlrd 计算公

式单元格

首先我们从 xlrd 导入打开 WorkBook 的函数 open_workbook,并且用它打开 tmp.xls 文件。 ? read_xls.py

用 xlrd 库读取 Excel 文件

>>> from xlrd import open_workbook

>>> book = open_workbook("tmp.xls")

接下来可以调用 book 的属性和方法获得我们所需要的信息:

>>> book.nsheets # Sheet 数

1

>>> print book.sheet_names()[0] # 第一个 Sheet 的名字

随机数

>>> sheet = book.sheets()[0] # 获得第一个 Sheet

调用 sheet 的 cell, row, col 等方法可以读取 sheet 中指定的单元格、行以及列中的元素。这些方法返

回的是Cell对象,如果我们希望直接获得它们的值,可以调用cell_value, row_values和col_values

等方法:

>>> sheet.cell(0, 0) # 读取 A1 的内容

text:u'normal'{http://pypi.python.org/pypi/xlrd3/}.

>>> sheet.row(0) # 读取第一行的内容

[text:u'normal', text:u'power', text:u'gamma', text:u'SUM']

# 读取第二列的内容,从第二行开始,并对其求和

>>> sum(x.value for x in sheet.col(1, start_rowx=1))

50.080880120307619

>>> sum(sheet.col_values(1, start_rowx=1)) # 同上

50.080880120307619

298 第 13 章 数据和文件>>> sheet.cell(1,3) # 读取公式单元格的值

number:0.41405871399469785

如果我们需要读取某个 Excel 文件,修改其中的某些内容然后再写回 Excel 文件中去,那么可以使用

xlutils 库中的 copy 函数快速完成从 xlrd.Book 的 xlwt.WorkBook 的转换复制工作。下面的程序在

tmp.xls 中添加一些文字,然后写到 output.xls 文件中去:

#coding=utf8

from xlrd import open_workbook

from xlutils.copy import copy

rb = open_workbook('tmp.xls',formatting_info=True)

wb = copy(rb)

ws = wb.get_sheet(0)

ws.write(0, 4, u"我添加了一些内容")

wb.save('output.xls')

import xlrd

fname = "sample.xls"

bk = xlrd.open_workbook(fname)

shxrange = range(bk.nsheets)

try:

sh = bk.sheet_by_name("Sheet1")

{http://pypi.python.org/pypi/xlrd3/}.

except:

print "no sheet in %s named Sheet1" % fname

return None

nrows = sh.nrows

ncols = sh.ncols

print "nrows %d, ncols %d" % (nrows,ncols)

cell_value = sh.cell_value(1,1)

print cell_value

row_list = []

for i in range(1,nrows):

row_data = sh.row_values(i)

row_list.append(row_data)

import xlrd

wb = xlrd.open_workbook('book.xls') # 打开文件

sheetNames = wb.sheet_names() # 查看包含的工作表

# 获得工作表的两种方法

sh = wb.sheet_by_index(0)

sh = wb.sheet_by_name(u'Sheet1')

# 单元格的值

cellA1 = sh.cell(0,0)

cellA1Value = cellA1.value

#可以用cell_values(rowIndex, colIndex)替代上边两步,对行,列的操作类似

cellA1Value = sh.cell_values(0, 0)

# 对工作表行的操作

for rownum in range(sh.nrows):

rowValueList = sh.row_values(rownum)

print rowValueList

# 第一列的值

columnValueList = sh.col_values(0){http://pypi.python.org/pypi/xlrd3/}.

# 虽然有put_cell()但是没有感觉有什么用,xlrd主要是用来读excel,如果想写的话有PyExcelerator,以后用到在志之

'''

在单元格输入一些内容:

row = 0

col = 0

ctype = 1 # 查看下面

value = 'asdf'

xf = 0 # 扩展的格式化 (默认是0)

sh.put_cell(row, col, ctype, value, xf)

sh.cell(0,0) # 文本:u'asdf'

sh.cell(0,0).value # 'asdf'

可选的类型ctype: 0 = empty(空), 1 = string(字符), 2 = number(数字), 3 = date(日期), 4 = boolean(布尔), 5 = error(错误)

'''

篇三:《ArduCAT_开发环境安装说明》

ArduCAT安装说明

1. 产品简介

ArduCAT是Arduino1 Compatible 开发板。本产品力图通过Arduino技术,大大简化EtherCAT从站的开发。ArduCAT开发板包含两路可用于EtherCAT实时以太网的100BASE-TX网口,所以它特别适合基于PC的自动化方案。ArduCAT使用ATMega1280 处理器,兼容Arduino Mega开发板,并具有完全相同的引脚定义。板上采用开关稳压器提供5V 或3.3V的2A直流输出,且发热甚微。除配套的开源Arduino库外,还配有从站应用层代码自动生成工具,用户只需编辑EXCEL表格便生成完整的协议栈,大大简化了通信协议的代码的开发,使用户能够将注意力集中在开发具体的应用上。

2. 软件安装

为了运行自动生成软件协议栈的工具,需要首先安装python及其xlrd模块。其次,需要安装Arduino和FDTI USB串口驱动,以实现代码的编译与下载。在测试中,使用EtherCAT 用户所熟悉的TwinCAT 或EtherCAT Configurator软件即可。下面就分别介绍各软件的安装。

2.1. Python

2.1.1. 下载

从python.org 下载Python 2.7 for Windows. 下载链接为:.

2.1.2. 安装

双击下载的安装文件,并按提示进行操作。

点击“下一步”。 1 Arduino is a registered trademark of Arduino, LLC.

点击“下一步”。

点击“下一步”。

安装完成。

2.2. xlrd 模块的安装

Python的 xlrd模块用于解析包含从站信息的EXCEL文件。

2.2.1. xlrd模块的下载

Xlrd模块可以从以下网址下载。具体的下载链接为: .

2.2.2. xlrd模块的安装

首先将下载的安装包解压。

打开Windows的命令行 “cmd”窗口,并进入已解压的安装包的目录,并键入以下命令:

{http://pypi.python.org/pypi/xlrd3/}.

“C:\Python27\python.exe” setup.py install

具体命令如上图示例,其中的 “D:\Software\xlrd-0.9.3\” 需被替换为解压的xlrd模块安装包目录。同时,如果Python被安装在非默认目录,则还需要将python目录“C:\Python27\python.exe” 替换为实际安装的目录。

上述命令执行完后,xlrd模块即安装完成。

2.3. TwinCAT 安装

“TwinCAT” 软件是自动化业界配合EtherCAT总线广泛使用的软件。如果不想使用“TwinCAT”软件,也可以使用一个更小的软件,即 “EtherCAT configurator”。它可以从 Beckhoff官方网站下载。下载链接为: .

TwinCAT 软件可以从网站的以下位置下载:

按照其提示即可完成软件安装。

2.4. Arduino 安装

从以下网址下载安装文件 参照Getting Started 网页完成软件安装。

2.5. FDTI USB串口驱动

从以下网站/Drivers/VCP.htm下载FDTI USB串口驱动安装包。 安装指南可以参照Documents页面下的Installation Guides。

3. 开源代码下载

ArduCAT 开发板配套有一个Arduino库和一个从站应用层代码自动生成工具。它们既可以通过GIT进行下载,也可以直接从Github网站下载压缩包。代码下载后可以看到以下4个文件和目录(其中后两个是隐藏的)。第一个目录是Arduino库,第二个目录是从站应用层代码自动生成工具。

如果您已经安装了git工具(例如Git for Windows等),那么使用下列链接 ();如果没有git工具,那么也可以直接从GitHub网站下载压缩包 (https://github.com/ethercat-diy/arducat/archive/master.zip) 。

代码下载完成后,打开Arduino软件并在菜单中选择“Sketch/Import Library…/Add Library…”.

在弹出的对话框中,选择已下载的代码目录下的libraries\ArduCAT子目录。这时“ArduCAT”库就出现在第三方库列表中了,如下图所述。

至此,安装已经完成。如果觉得上一步中选择目录有些烦琐,也可以把代码直接下载或解压在Arduino工作目录下 (例如My Documents\Arduino), 这样Arduino就会自动识别它了。

篇四:《Python入门整理1-基础》

Python 基础教程

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python下环境搭建

Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到: Python官网:/retype/zoom/c354a3df6bd97f192379e927?pn=1&x=0&y=0&raww=217&rawh=29&o=jpg_6_0_______&type=pic&aimh=29&md5sum=abc7d680d45918ec0228b245c0e7670b&sign=f672f56eeb&zoom=&png=0-5938&jpg=0-2811″ target=”_blank”>

2. pip使用 a) 查找: i. ii. pip search xlrd

b) 安装 i. pip install xlrd,xlwt

c) 获取已安装的包

i.

pip list

Python 基础语法

中文编码

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了。

行和缩进

学习

Python与其他语言最大的区别就是,

Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。

缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

多行语句

Python语句中一般以新行作为为语句的结束符。 但是我们可以使用斜杠(

\

)将一行的语句分为多行显示,如下所示:

语句中包含[], {} 或 () 括号就不需要使用多行连接符。如下实例:

转载请注明:中小学优秀作文大全_作文模板_写作指导_范文大全 » http://pypi.python.org/pypi/xlrd3/