数据处理是Python的一大应用场景,而Excel是最流行的数据处理软件。因此,在用Python做数据相关的工作时,不可避免地要和Excel打交道。如果只想将数据保存在表格中,可以使用CSV格式(一种逗号分隔的表格数据格式),Excel也支持这种格式。但是标准的Excel文件(xls/xlsx)格式比较复杂,不像普通文本文件那样直接读写不方便,需要借助第三方库来实现。常用的库有python-excel系列:xlrd、xlwt、xlutilsxlrd-读取Excel文件xlwt-写入Excel文件xlutils-操作Excel文件的实用程序,如复制、拆分、过滤等。虽然这是目前使用最多的Excel库,我还是要吐槽一下为什么这三个包不能放在一个模块里。。。另外,它们还有一个缺陷,就是只能处理xls文件。如果您想使用较新版本的xlsx,请考虑openpyxl和xlsxwriter。不过今天我只讲这三个。安装方法没什么特别的,就是要安装三遍。可以下载安装包,下载代码压缩包,或者使用pip等,如果你安装了之前推荐的anaconda,那么你已经有xlrd和xlwt了,但是安装包里没有xlutils,你还需要使用时单独安装。阅读结合一段简单代码看:importxlrd#Openxlsfilebook=xlrd.open_workbook("test.xls")print"张数:",book.nsheetsprint"sheetname:",book.sheet_names()#get第一个表格sh=book.sheet_by_index(0)printu"表格%s共有%d行%d列"%(sh.name,sh.nrows,sh.ncols)print"第二行第三列:",sh.cell_value(1,2)#遍历所有表格forsinbook.sheets():forrinrange(s.nrows):#输出指定行prints.row(r)测试文件:输出结果:表格数量:2表格名称:[u'Group.A',u'Group.B']FormGroup.A有7行3列,第二行第三列:15.0[text:u'Rank',text:u'Team',text:u'Points'][number:1.0,text:u'Brazil',number:15.0][number:2.0,text:u'Russia',number:12.0]...常用方法:open_workbook打开filesheet_by_index获取某个表单sheet获取所有表单cell_value获取指定单元格的数据写或者看代码:importxlwt#Createxlsfileobjectwb=xlwt.Workbook()#Addanewformsh=wb.add_sheet('ATestSheet')#按位置添加数据sh.write(0,0,1234.56)sh.write(1,0,8888)sh.write(2,0,'hello')sh.write(2,1,'world')#保存文件wb.save('example.xls')生成文件:常用方法:Workbook创建文件对象add_sheet添加新表单write在指定单元格修改写入数据可惜没有直接修改xls文件的方法。通常的方式是读取文件,复制一份数据,修改,保存。复制的时候需要使用xlutils中的方法。fromxlrdimportopen_workbookfromxlutils.copyimportcopy#打开文件rb=open_workbook("example.xls")#复制wb=copy(rb)#选择表格s=wb.get_sheet(0)#写入数据s.write(0,1,'newdata')#Savewb.save('example.xls')修改后的文件:需要注意的是,选择读取表格时,使用sheet_by_index,选择写入表格时,使用get_sheet。别问我为什么,我也想知道这个设置的目的...时间转换如果表单中有时间格式的数据,经过处理后,你会发现时间数据是错误的。输出单元格内容:[number:8888.0,xldate:42613.0]因为这里xldate有自己的格式定义。如果要使用正确的格式,必须转换:new_date=xlrd.xldate.xldate_as_datetime(date,book.datemode)date是对应单元格的数据,book是打开的文件对象。另外,打开文件时,加上参数formating_info=True,保证复制时时间数据不变。写入时间数据可以使用这种方法创建excel的时间对象:xlrd.xldate.xldate_from_datetime_tuple或者通过xlwt.easyxf指定时间格式:style=xlwt.easyxf(num_format_str='D-MMM-YY')ws.write(1,0,datetime.now(),style)的细节和更多的功能这里就不解释了。以上就是Python操作Excel文件的一些基本方法。如果你在实际使用中遇到问题或者需要了解更多的功能,永远记住两个词:RTFM、STFW:)
