6-5 如何读写excel文件

>>> import xlrd,xlwt
一、读excel
1、打开一个excel(读模式)
>>> book = xlrd.open_workbook(r"C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\6-6.xls") #读模式打开一个excel,读一个excel要先实例化一个workbook >>> book.sheets() #查看excel的各个表 [<xlrd.sheet.Sheet object at 0x02CD7270>, <xlrd.sheet.Sheet object at 0x02CD7530>, <xlrd.sheet.Sheet object at 0x02CD7590>]
2、打开一个sheet表
>>> book.sheet_by_index(0) <xlrd.sheet.Sheet object at 0x02CD7270> >>> sheet0 =book.sheet_by_index(0) #按索引打开一个表 >>> sheet0.nrows #表的行数 4 >>> sheet0.ncols #表的列数 4 >>> sheet0.name #表的名字 u'\u6210\u7ee9' >>> print sheet0.name 成绩
3、获取表里的一个表格
>>> cell = sheet0.cell(0,0) #获取表里的一个单元格cell,按坐标选取 >>> cell #打印结果看出是text(文本)类型,内容为u'\u59d3\u540d'(成绩的unicode) text:u'\u59d3\u540d' >>> cell.ctype #查看单元格内容的类型,其结果是一个玫举类型,玫举定义在xlrd.XL_CELL_ 1 >>> xlrd.XL_CELL_TEXT #文本内容的类型是1 1 >>> print cell.value 姓名 >>> cell = sheet0.cell(1,2) #取坐标为(1,2)的表格 >>> cell #单元格类型为数字,内容为99.0 number:99.0 >>> cell.ctype 2 >>> xlrd.XL_CELL_NUMBER 2 >>> cell.value 99.0
4、查看整行
>>> sheet0.row(1) #获取1行的内容,参数为行号,返回一个列表。每一个对象都是一个cell对象 [text:u'\u674e\u96f7', number:95.0, number:99.0, number:96.0] >>> sheet0.row_values(1) #获取1行的内容(不带内容类型的签名,直接就是内容)返回也是一个列表 [u'\u674e\u96f7', 95.0, 99.0, 96.0] >>> sheet0.row_values(1,1) #获取1行内容,从第1项开始,带有切片功能 [95.0, 99.0, 96.0]
>>> help(sheet0.row_values) Help on method row_values in module xlrd.sheet: row_values(self, rowx, start_colx=0, end_colx=None) method of xlrd.sheet.Sheet instance Returns a slice of the values of the cells in the given row.
5、查看整列,与行row操作类似
>>> sheet0.col(1) [text:u'\u8bed\u6587', number:95.0, number:98.0, number:94.0] >>> sheet0.col_values(1) [u'\u8bed\u6587', 95.0, 98.0, 94.0] >>> sheet0.col_values(1,1) [95.0, 98.0, 94.0]
6、添加一个单元格
>>> help(sheet0.put_cell) Help on method put_cell_unragged in module xlrd.sheet: put_cell_unragged(self, rowx, colx, ctype, value, xf_index) method of xlrd.sheet.Sheet instance
参数分别为,行号、列号、内容类型,值,xf_index为字体、对齐等格式(可以填None)
二、写excel
1、#写一个excel要先实例化一个workbook
>>> wbook = xlwt.Workbook() #注意与xlrd的不同
2、添加一个sheet,参数为sheet名字
>>> wsheet1 = wbook.add_sheet('sheet1')
3、写一个单元格
>>> help(wsheet1.write) Help on method write in module xlwt.Worksheet: write(self, r, c, label='', style=<xlwt.Style.XFStyle object>) method of xlwt.Worksheet.Worksheet instance This method is used to write a cell to a :class:`Worksheet`.
4、保存excel到文件中
>>> help(wbook.save) Help on method save in module xlwt.Workbook: save(self, filename_or_stream) method of xlwt.Workbook.Workbook instance This method is used to save the Workbook to a file in native Excel format. :param filename_or_stream: This can be a string containing a filename of the file, in which case the excel file is saved to disk using the name provided. It can also be a stream object with a write method, such as a :class:`~io.StringIO`, in which case the data for the excel file is written to the stream.
将6-6.xls最右列增加一列总分,注意,xlrd可以增加一列,但是没有保存的功能。脚本文件代码为:

# -*- coding: cp936 -*- import xlrd,xlwt rbook = xlrd.open_workbook(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\6-6.xls') rsheet = rbook.sheet_by_index(0) #打开sheet nc = rsheet.ncols #获取列数 nr = rsheet.nrows #获取行数 rsheet.put_cell(0,nc,xlrd.XL_CELL_TEXT,u'总分',None) #放置一个单元格,内容格式是文本,内容是总分 for row in xrange(1,nr): #迭代表的每一行(除标题栏) t = sum(rsheet.row_values(row,1)) #获取行的值并求和(除标题列) rsheet.put_cell(row,nc,xlrd.XL_CELL_NUMBER,t,None)#在每一行放置一个单元格,内容是计算的求和的值 wbook = xlwt.Workbook() #创建一个excel wsheet = wbook.add_sheet(rsheet.name) #添加一个sheet名字是读sheet的名字 style = xlwt.easyxf('align: vertical center,horizontal center')#定义单元格的格式,为write准备,和put_cell不同put_cell可以传None,write不行 for row in xrange(rsheet.nrows): for col in xrange(rsheet.ncols): #迭代读sheet的每一行每一列,对每一个单元格进行迭代,因为写时只能对单元格逐一写,不能整行写 cell = rsheet.cell_value(row,col)#获取读sheet的单元格的内容 wsheet.write(row,col,cell,style) #写入写sheet单元格 wbook.save(r'C:\视频\python高效实践技巧笔记\6数据编码与处理相关话题\6-6output.xlsx') #将excel保存为
输出格式为:

posted on 2018-04-28 13:22 石中玉smulngy 阅读(640) 评论(0) 收藏 举报
浙公网安备 33010602011771号