微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python处理Excel的简单示例

对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧!

Python中一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件。这三个库只支持到Excel2003。

python-excel主页地址:http://www.python-excel.org/

xlrd

地址:https://pypi.python.org/pypi/xlrd

github地址:https://github.com/python-excel/xlrd

打开excel文件获取一个Book()对象:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

import xlrd
book = xlrd.open_workbook(myfile.xls)

# End www.jb51.cc

获取sheets数目:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

>>> book.nsheets
3

# End www.jb51.cc

获取sheets列表:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

>>> book.sheets()
[<xlrd.sheet.Sheet object at 0x01A93970>,<xlrd.sheet.Sheet object at 0x01A93950>,<xlrd.sheet.Sheet object at 0x01A93E70>]

# End www.jb51.cc

获取sheets name列表:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

>>> book.sheet_names()
[u'Sheet1',u'Sheet2',u'Sheet3']

# End www.jb51.cc

获取Book()中的Sheet:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

sheet = book.sheets()[0]          #sheets返回一个sheet列表
sheet = book.sheet_by_index(0)    #通过索引顺序获取
sheet = book.sheet_by_name(u'Sheet1')#通过名称获取

# End www.jb51.cc

获取行数,列数,名字:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

>>> sheet.nrows
1002
>>> sheet.ncols
11
>>> sheet.name
u'Sheet1'

# End www.jb51.cc

获取某行,某行值列表,某列,某列值列表:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

sheet.row(i)
sheet.row_values(i)
sheet.col(i)
sheet.col_values(i)

# End www.jb51.cc

获取单元格的值:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

cell = sheet.cell(i,j)
cell_value = sheet.cell_value(i,j)
cell_value = sheet.cell(i,j).value

# End www.jb51.cc

需要注意的是,用xlrd读取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。

xlwt

地址:http://pypi.python.org/pypi/xlwt,适用于python2.3-2.7

xlwt-future:https://pypi.python.org/pypi/xlwt-future/0.8.0,适用于Python 2.6-3.3

github地址:https://github.com/python-excel/xlwt

创建一个Excel文件并创建一个Sheet:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

from xlwt import *
book = Workbook()
sheet = book.add_sheet('Sheet1')
book.save('myExcel.xls')

# End www.jb51.cc

Workbook类可以有encoding和style_compression参数。

encoding,设置字符编码,style_compression,表示是否压缩。这样设置:w = Workbook(encoding='utf-8'),就可以在excel中输出中文了。认是ascii。

向sheet写入内容


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

sheet.write(r,c,label=,style=Style.default_style)

# End www.jb51.cc

简单写入:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

sheet.write(0,label = 'Row 0,Column 0 Value')

# End www.jb51.cc

设置格式写入:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

font = xlwt.Font() # 字体
font.name = 'Times New Roman'
font.bold = True
font.underline = True
font.italic = True
style = xlwt.XFStyle() # 创建一个格式
style.font = font # 设置格式字体
sheet.write(1,label = 'Formatted value',style) # Apply the Style to the Cell
book.save('myExcel.xls')

# End www.jb51.cc

写入日期:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

style = xlwt.XFStyle()
style.num_format_str = 'M/D/YY' # Other options: D-MMM-YY,D-MMM,MMM-YY,h:mm,h:mm:ss,M/D/YY h:mm,mm:ss,[h]:mm:ss,mm:ss.0
sheet.write(0,datetime.datetime.Now(),style)

# End www.jb51.cc

写入公式:


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

sheet.write(0,5) # Outputs 5
sheet.write(0,1,2) # Outputs 2
sheet.write(1,xlwt.Formula('A1*B1')) # 输出 10 (A1[5] * A2[2])
sheet.write(1,xlwt.Formula('SUM(A1,B1)')) # 输出 7 (A1[5] + A2[2])

# End www.jb51.cc

写入链接


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

sheet.write(0,xlwt.Formula('HYPERLINK(http://www.google.com;Google)')) #输出 Google链接到http://www.google.com

# End www.jb51.cc

xlutils

地址:http://pythonhosted.org/xlutils/

github地址:https://github.com/python-excel/xlutils

xlutils.copy.copy(wb)

复制一个xlrd.Book对象,生成一个xlwt.Workbook对象,可以对xlwt.Workbook进行修改


# @param python处理Excel
# @author 编程之家 jb51.cc|jb51.cc 

from xlrd import open_workbook
from xlutils.copy import copy
book = open_workbook('myExcel.xls')
wbook = copy(book)  #wbook即为xlwt.WorkBook对象
wsheet = wbook.get_sheet(0)  #通过get_sheet()获取的sheet有write()方法
wsheet.write(0,'value')
wb.save('myExcel.xls')

# End www.jb51.cc

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐