一、概述
Python操作excel的三个工具包如下,注意,只能操作.xls,不能操作.xlsx。
xlrd: 对excel进行读相关操作
xlwt: 对excel进行写相关操作
xlutils: 对excel读写操作的整合
这三个工具包都可以直接使用pip进行下载:
sudo pip install xlrdsudo
pip install xlwtsudo
pip install xlutils
二、使用xlrd模块读取已有的excel文件内容
xlrd是用来从一个excel文件中读取内容的模块
代码如下:
导入 import xlrd 打开excel data = xlrd.open_workbook('demo.xls') #注意这里的workbook首字母是小写 查看文件中包含sheet的名称 data.sheet_names() 得到第一个工作表,或者通过索引顺序 或 工作表名称 table = data.sheets()[0] table = data.sheet_by_index(0) table = data.sheet_by_name(u'Sheet1') 获取行数和列数 nrows = table.nrows ncols = table.ncols 获取整行和整列的值(数组) table.row_values(i) table.col_values(i) 循环行,得到索引的列表 for rownum in range(table.nrows): print table.row_values(rownum) 单元格 cell_A1 = table.cell(0,0).value cell_C4 = table.cell(2,3).value 分别使用行列索引 cell_A1 = table.row(0)[0].value cell_A2 = table.col(1)[0].value 简单的写入 row = 0 col = 0 ctype = 1 # 类型 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error value = 'lixiaoluo' xf = 0 # 扩展的格式化 (默认是0) table.put_cell(row, col, ctype, value, xf) table.cell(0,0) # 文本:u'xxxx' table.cell(0,0).value # 'yyyy' |
三、使用xlwd模块写内容保存到新的excel文件中
xlwt只能创建一个全新的excel文件,然后对这个文件进行写入内容以及保存。但是大多数情况下我们希望的是读入一个excel文件,然后进行修改或追加,这个时候就需要xlutils了。
代码如下:
导入xlwt import xlwt 新建一个excel文件 file = xlwt.Workbook() #注意这里的Workbook首字母是大写,无语吧 新建一个sheet table = file.add_sheet('sheet name') 写入数据table.write(行,列,value) table.write(0,0,'test') 如果对一个单元格重复操作,会引发 returns error:# Exception: Attempt to overwrite cell:# sheetname=u'sheet 1' rowx=0 colx=0所以在打开时加cell_overwrite_ok=True解决 table = file.add_sheet('sheet name',cell_overwrite_ok=True) 保存文件 file.save('demo.xls') 另外,使用style style = xlwt.XFStyle() #初始化样式 font = xlwt.Font() #为样式创建字体 font.name = 'Times New Roman' font.bold = True style.font = font #为样式设置字体 table.write(0, 0, 'some bold Times text', style) # 使用样式 |
四、使用xlutils模块追加写入内容到已有的excel文件中(新内容追加到已有内容里面)
代码如下:
# -*- coding: cp936 -*- import xlwt; import xlrd; #import xlutils; from xlutils.copy import copy; import xlrd #用xlrd提供的方法读取一个已经存在的excel文件,使用"formatting_info=True"保持源文件格式不变 rexcel = xlrd.open_workbook("file.xls",formatting_info=True) #用wlrd提供的方法获得现在已有的行数 rows = rexcel.sheets()[0].nrows #cols = rexcel.sheets()[0].ncols #用xlutils提供的copy方法将xlrd的对象转化为xlwt的对象 excel = copy(rexcel) #用xlwt对象的方法获得要操作的excel中的表名(sheet),0表示第一张表,1表示第二张表。 table = excel.get_sheet(0) values = ['1','2','3'] row = rows print row for value in values: # xlwt对象的写方法,参数分别是行、列、值 table.write(row,0,value) table.write(row,1,"haha") table.write(row,2,"lala") row+=1 # xlwt对象的保存方法,这时便覆盖掉了原来的excel excel.save("file.xls") |
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。