1、打开Excel文件读取数据
workbook = xlrd.open_workbook('excelFile.xls')
2、使用方法
获取一个工作表
sheet = workbook.sheets()[0] #通过索引顺序获取
sheet = workbook.sheet_by_index(0) #通过索引顺序获取
sheet = workbook.sheet_by_name(u'Sheet1')#通过名称获取
获取整行和整列的值(列表)
sheet.row_values(i)
sheet.col_values(i)
获取行数和列数
nrows = sheet.nrows
ncols = sheet.ncols
循环行列表数据
for i in range(nrows ):
print sheet.row_values(i)
单元格
cell_A1 = sheet.cell(0,0).value
cell_C4 = sheet.cell(2,3).value
使用行列索引
cell_A1= sheet.row(0)[0].value
cell_A2 = sheet.col(1)[0].value
cell_A1= sheet.row_values(0)[0]
示例代码:
#encoding=utf-8
from xlrd import * #引入读模块
from xlwt import * #引入写模块
from xlutils.copy import copy #引入连接读写的模块
#以读写方式打开指定的Excel文件指定表单,不存在时创建文件
def OpenExcel(filename,sheetname):
try:
#打开工作薄,保留原来的格式,编码格式为utf8
rb=open_workbook(filename,encoding_override="utf-8",formatting_info=True)
except IOError:
wb=Workbook(encoding='utf-8')
ws=wb.add_sheet(sheetname)
wb.save(filename)
rb = open_workbook(filename,formatting_info=True)
#rs = rb.sheet_by_index(n) #获取第n个工作表
rs=rb.sheet_by_name(sheetname) #通过名称获取一个工作表
wb=copy(rb) #将只读工作薄拷贝为可写工作薄
ws=wb.get_sheet(0) #获取第0个工作表
return rb,rs,wb,ws
#写EXCEL文件
def WriteExcel(writebook,string,row,col,n):
#定义写入单元格字体格式,包含中文时必须带u
title=easyxf(u'font:name 仿宋,height 240 ,colour_index black, bold on, italic off; align: wrap on, vert centre, horiz center;pattern: pattern solid, fore_colour light_orange;') #字体黑色加粗,自动换行、垂直居中、水平居中,背景色橙色
normal=easyxf('font:colour_index black, bold off, italic off; align: wrap on, vert centre, horiz left;') #字体黑色不加粗,自动换行、垂直居中、水平居左
warn=easyxf('font:colour_index red, bold off, italic off; align: wrap on, vert centre, horiz left;')#字体红色,自动换行,垂直居中,水平居中
if n==0:
writesheet.write(row,col,string.decode('utf-8'),title) #在第row行col列写入string,格式为title
if n==1:
writesheet.write(row,col,string.decode('utf-8'),normal)
if n==2:
writesheet.write(row,col,string.decode('utf-8'),warn)
writebook.save(filename) #保存工作薄
def ReadExcel(row,col):
print readsheet.row_values(row,1,10) #打印第row行2到11列,保存在列表中
print readsheet.col_values(col,1,10) #打印第col列2到11列,保存在列表中
print readsheet.row_values(0)[0] #打印第一行第一列单元格的值
print readsheet.col_values(4)[0] #打印第五列第一行单元格的值
if __name__=='__main__':
import sys
ctype=sys.getfilesystemencoding()
filename=u"test.xlsx"
sheetname=u'结果'
readbook,readsheet,writebook,writesheet=OpenExcel(filename,sheetname)
string=u'标题行'
WriteExcel(writebook,string,0,0,0)
ReadExcel(1,4)