脚本如下:
from openpyxl import load_workbook workbook = load_workbook(u'/tmp/test.xlsx') #找到需要xlsx文件的位置 booksheet = workbook.active #获取当前活跃的sheet,默认是第一个sheet #如果想获取别的sheet页采取下面这种方式,先获取所有sheet页名,在通过指定那一页。 # sheets = workbook.get_sheet_names() # 从名称获取sheet # booksheet = workbook.get_sheet_by_name(sheets[0]) #获取sheet页的行数据 rows = booksheet.rows #获取sheet页的列数据 columns = booksheet.columns i = 0 # 迭代所有的行 for row in rows: i = i + 1 line = [col.value for col in row] cell_data_1 = booksheet.cell(row=i, column=3).value #获取第i行1 列的数据 cell_data_2 = booksheet.cell(row=i, column=4).value #获取第i行 2 列的数据 cell_data_3 = booksheet.cell(row=i, column=8).value #获取第i行 3 列的数据 cell_data_4 = booksheet.cell(row=i, column=18).value #获取第i行 4 列的数据 print (cell_data_1, cell_data_2, cell_data_3, cell_data_4)
实例:python读取excel数据做分类统计
某excel中记录了某个人的通话记录,下面程序将按照通话地点,通话类型等统计通话时间
# -*- coding:utf-8 -*- import xlrd import datetime infos=[] info_file=xlrd.open_workbook('src.xls')#打开excel文件 info_sheet=info_file.sheets()[0]#通过索引顺序获取工作表 row_count=info_sheet.nrows#获取行数,列数ncols for row in range(1,row_count): time_string=info_sheet.cell(row,3).value time_s_sp=time_string.split(':') infos.append(#该数组里放了row_count个字典 { 'type':info_sheet.cell(row,2).value,#获取单元格,通话类型,主叫被叫 'other_cellphone':info_sheet.cell(row,0).value,#对方号码, 'timespan':datetime.timedelta(seconds=int(time_s_sp[2]),minutes=int(time_s_sp[1]),hours=int(time_s_sp[0])), 'gpscity':info_sheet.cell(row,5).value#通话是本地还是外地 } ) time_all=datetime.timedelta(seconds=0)#初始化 time_types={} time_classes={} time_numbers={} for infor in infos:#取出该数组里的字典 time_all +=infor['timespan']#求总通话次数 infor_type=infor['type'] if infor_type in time_types: time_types[infor_type]+=infor['timespan'] else: time_types[infor_type]=infor['timespan']#按通话类型统计通话时间 infor_class=infor['gpscity'] if infor_class in time_classes: time_classes[infor_class]+=infor['timespan'] else: time_classes[infor_class]=infor['timespan']#这里相当于先分类赋值再++,按归属地统计通话时间 infor_number=infor['other_cellphone'] if infor_number in time_numbers: time_numbers[infor_number]+=infor['timespan'] else: time_numbers[infor_number]=infor['timespan']#根据号码统计通话时间 print '总通话时间:%s' % time_all print print '总通话方式分类' for k,v in time_types.items(): print k.encode('utf-8'),v print print '通话类型分类:' for k,v in time_classes.items(): print k.encode('utf-8'),v print print '对方号码分类:' for k,v in time_numbers.items(): print k,v
再优化下代码
# -*- coding:utf-8 -*- import xlrd from datetime import timedelta def read_excel(file_excel):#读excel并将需要的数据分类放在数组里 infos=[] info_file=xlrd.open_workbook(file_excel) info_sheet=info_file.sheets()[0] row_count=info_sheet.nrows for row in range(1,row_count): time_string=info_sheet.cell(row,3).value time_s_sp=time_string.split(':') infos.append( { 'type':info_sheet.cell(row,2).value, 'other_cellphone':info_sheet.cell(row,0).value, 'timespan':timedelta(seconds=int(time_s_sp[2]),minutes=int(time_s_sp[1]),hours=int(time_s_sp[0])), 'gpscity':info_sheet.cell(row,5).value } ) return infos def count_cell(list_dirs,infotype):#统计总通话及分类统计结果,存在字典里 result_dir={} time_all=timedelta(seconds=0) for list_dir in list_dirs: time_all +=list_dir['timespan'] info_type = list_dir[infotype] if info_type not in result_dir: result_dir[info_type]=list_dir['timespan'] else: result_dir[info_type]+=list_dir['timespan'] return time_all,result_dir def print_result(result_dir):#打印数据 for k,v in result_dir.items(): print k.encode('utf-8'),v if __name__=="__main__": list_dirs=read_excel('src.xls') time_all,result_type=count_cell(list_dirs,'type') result_cell=count_cell(list_dirs,'other_cellphone') result_gpscity = count_cell(list_dirs, 'gpscity') print '总通话时间:%s' % time_all print '按照通话类型分类:' print_result(result_type) print '按照号码分类:' print_result(result_cell[1]) print '按照归属地分类:' print_result(result_gpscity[1])
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍python读取xlsx的方法,包括了python读取xlsx的方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇python读取xlsx的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍Python按行读取文件的实现方法【小文件和大文件读取】,包括了Python按行读取文件的实现方法【小文件和大文件读取】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python按行读取文件的实现方法。分享给大家供大家参考,具体如下: 小文件: 大文件: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操
问题内容: 我需要在Java应用程序中读取Excel 2007 XLSX文件。有谁知道一个很好的API来完成这项任务? 问题答案: AFAIK还没有可用的xlsx库。但是有些旧的xls: 一个库是jxls,它内部使用已经提到的POI。 其他2个链接:处理Excel文件,用于读写Excel XLS文档文件的Java库 。
本文向大家介绍python3读取csv和xlsx文件的实例,包括了python3读取csv和xlsx文件的实例的使用技巧和注意事项,需要的朋友参考一下 基于win10系统,python3.6 读取csv 使用csv函数包,安装 pip install csv 使用方法: 读取xlsx 使用xlrd函数包,安装: pip install xlrd 使用方法: 这两个较为常用,需要知道如何使用。 以上
本文向大家介绍python使用xlrd模块读取xlsx文件中的ip方法,包括了python使用xlrd模块读取xlsx文件中的ip方法的使用技巧和注意事项,需要的朋友参考一下 程序中经常需要使用excel文件,批量读取文件中的数据 python读取excel文件可以使用xlrd模块 pip install xlrd安装模块 示例: 以上这篇python使用xlrd模块读取xlsx文件中的ip方法就
本文向大家介绍Python实现读取文件最后n行的方法,包括了Python实现读取文件最后n行的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现读取文件最后n行的方法。分享给大家供大家参考,具体如下: 以上处理和日志文件格式为 读取最后一行: 更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总