python提供了从Excel表格中读取数据的模块xlrd,和xlwt模块将数据写入Excel表格。
xlrd和xlwt模块需要我们自己安装。
1.准备工作
1.安装
-
外网安装方法
pip install xlrd
pip install xlwt -
内网安装方法
a.在python官网下载http://pypi.python.org/pypi/xlrdxlrd下载xlrd的安装包。
b.压缩包放置在python安装目录下python/Lib/site-packages。
c.解压压缩包:tar zxvf xlrd-1.0.0.tar.gz
d.进入到解压的文件夹:cd xlrd-1.0.0
e.执行命令:python setup,py install
2.测试
打来终端,python—>import xlrd。如果不报no xlrd module错误表示安装成功。
2.xlrd使用详解
-
1.打开Excel表格文件读取数据
#加上utf-8编码,放置遇到中文字符时乱码
data = xlrd.open_workbook(filename,encoding_override = ‘utf-8’)
问题:
1.文件名若包含中文,会报错找不到这个文件或目录。
2.获取sheet时若包含中文,也会报错。
解决方法1:
xlrd.open_workbook()函数中加上encoding_override = 'utf-8’属性。
解决方法2:
对参数进行utf8转码,如:filename = filename.decode(‘utf-8’)
¥获取sheet
工作表和对象
-
1.通过指定索引获取sheet工作表名称
sheet_name = data.sheet_names()[0] -
2.通过sheet工作表名称获取sheet对象
table =data.sheet_by_name(sheet_name) -
3.通过sheet索引获取sheet工作表的对象
table = data.sheet_by_index(0) -
4.获取所有sheet工作表的名字
sheetnames = data.sheet_names() #返回book中所有工作表的名字 -
5.检查某个sheet是否导入完毕
data.sheet_loaded(sheet_name or indx)
¥.行操作列操作
- 1.获取行数和列数
nrows=table.nrows #总行数
ncols = table.ncols #总列数 - 2.获得指定行列的值
返回对象为该行该列中所有单元格的数据组成的列表。
row_data = table.row_values(1) #获得第2行的数据列表
col_data = table.col_values(1) #获得第2列的数据列表
table.row_len(rowx) #返回该列的有效单元格长度
¥单元格操作
单元格是组成表格的最小单位,可以拆分或者合并。每个数据的输入和修改都是在单元格中进行的。
- 单元格对象
table.cell(rowx,colx) #返回单元格对象 - 单元格数据类型
table.cell_type(rowx,colx) #返回单元格中的数据类型 - 求单元格中的数据
table.cell_value(rowx,colx) #返回单元格中的数据
-
单元格数据类型
- 0.empty(空的)
- 1.string(text)
- 2.number
- 3.date
- 4.boolean
- 5.error
- 6.blank(空白表格)
-
获取单元格内容的数据类型
ctype=sheet2.cell(1,0).ctype #第2行第1列内容数据类型
¥使用实例
可以封装成函数使用。
import xlrd
def getFiledData(filename):
#字段结构字典{'id_0001-1',{'02D0005',''账号ID},}
getfiledDict={}
onesheetDict={}
#打开Excel表格文件
xlsdata = xlrd.open_workbook(filename,encoding_override = 'utf-8')
#获取所有的sheet
tableList = xlsdata.sheet_names()
#循环读表中每行保存需要内容
for tablenum in tableList:
#获取工作表
table = xlsdata.sheet_by_name(tablenum)
#行
nrows=table.nrows
for rownum in range(1,nrows):
chinesename = table.cell_value(rownum,2)
mustfileds = table.cell_value(rownum,6)
onesheetDict[chinesename]=mustfileds
getfiledDict[tablenum]=onesheetDict
#每张表读完初始化
onesheetDict={}
return getfiledDict
3.xlwt基本操作
#coding: utf-8
import xlwt
#创建一个table对象,使用utf-8编码,并设定压缩比
table = xlwt.Workbook(encoding='utf-8', style_compression=0)
#添加一个sheet对象
sheet = table.add_sheet('sheet 1',cell_overwrite_ok=True) #第二个参数用于确认同一个cell单元是否可以重设值
sheet.write(0,0,'sometext') #往指定单元格写入数据
sheet.write(0,0,'overwrite') #覆盖写入,需要cell_overwrite_ok=True
#设定单元格风格,指定字体格式等
style = xlwt.XFStyle()
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
style.font = font
sheet.write(0,1,'text', style)
table.save(r'E:\py\test.xls') #该文件名必须存在
每天进步一点点、快乐一点点、开心一点点。good,come on!