Python读取xlsx文件的实现方法


Posted in Python onJuly 04, 2019

脚本如下:

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 相关文章推荐
python正则表达式match和search用法实例
Mar 26 Python
Python Datetime模块和Calendar模块用法实例分析
Apr 15 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
Python文本处理简单易懂方法解析
Dec 19 Python
Python3列表List入门知识附实例
Feb 09 Python
python实现飞机大战项目
Mar 11 Python
python实现数字炸弹游戏程序
Jul 17 Python
使用Python解析Chrome浏览器书签的示例
Nov 13 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 Python
使用python进行广告点击率的预测的实现
Jul 04 #Python
python命令行工具Click快速掌握
Jul 04 #Python
python 设置输出图像的像素大小方法
Jul 04 #Python
python变量命名的7条建议
Jul 04 #Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 #Python
python批量修改图片尺寸,并保存指定路径的实现方法
Jul 04 #Python
python代理工具mitmproxy使用指南
Jul 04 #Python
You might like
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
10条php编程小技巧
2015/07/07 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
php中switch语句用法详解
2015/08/17 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
JS获得选取checkbox整行数据的方法
2015/01/28 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
2016/01/29 Javascript
关于微信上网页图片点击全屏放大效果
2016/12/19 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
Nodejs实现爬虫抓取数据实例解析
2018/07/05 NodeJs
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
python实现多线程采集的2个代码例子
2014/07/07 Python
python常见排序算法基础教程
2017/04/13 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
Python的形参和实参使用方式
2019/12/24 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
项目管理计划书
2014/01/09 职场文书
自荐信需注意事项
2014/01/25 职场文书
网络书店创业计划书
2014/02/07 职场文书
大学毕业生推荐信
2014/07/09 职场文书
先进个人材料怎么写
2014/12/30 职场文书
倡议书范文大全
2015/04/28 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
Python time库的时间时钟处理
2021/05/02 Python
Python使用Web框架Flask开发项目
2022/06/01 Python