脚本如下:

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文件的实现方法相关推荐

  1. python读excel并写入_Python读取Excel文件并写入数据库

    好方法最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而 ...

  2. python读yaml的库_Python读取YAML文件过程详解

    这篇文章主要介绍了Python读取YAML文件过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python读取方法: import yaml ...

  3. python读excel并写入_python 读取excel文件并写入json

    excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data1 = xl ...

  4. python 读excel中的sheet_python读取excel文件中所有sheet表格

    sales: store: """ (1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个fo ...

  5. python读txt很大_Python读写txt文件

    python读写txt文件 准备原始txt数据 3.14159265358979323846264338327950288419716939937510582097494459230781640628 ...

  6. python运行微软图标代码_Python读取xlsx数据生成图标代码实例

    运行结果: 程序代码如下: #将excel中的数据进行读取分析 import openpyxl import numpy as np import math import matplotlib.pyp ...

  7. python读excel成数组_python读取excel数据 python怎么从excel中读取数据?

    python怎么从excel中读取数据?分母那么浩瀚,分子那么微弱.唯一就等于没有. #导入包 import xlrd #设置路径 path='C:\\Users\\jyjh\\Desktop\\da ...

  8. python读取nc数据_python读取nc文件

    nc文件的处理方式比较多,可以用MATLAB.JAVA.C.python或者其他的语言.我这两天折腾用python读取nc文件,查阅很多资料,左拼右凑的终于读出来了. 1.安装Anaconda 1)A ...

  9. python csv文件参数化_Python 读取csv文件的某一列数据,并定义两个pattern,确定变化区间...

    Python 读取csv文件的某一列数据,并定义两个pattern,[-1, 1, 1] 和 [1, -1, -1]可以确定不同的变化区间 抓取股票数据,确定股票的变化区间. Date 3D10 20 ...

  10. python处理mat数据_python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001. ...

最新文章

  1. Python-常用字符串转换实例
  2. 仿百度GIF验证码 GIFEncoder 跳动验证码 随机背景色、颜色、字体、子大小、偏移、干扰线等...
  3. Win7部署基础知识(7):使用Imagex捕获和安装映像
  4. 对多态变形引擎背后方法的概述
  5. java 监听map的数据_使用监听器:定时清除map缓存的key value .
  6. java内部类为什么会持有外部类的引用_为什么内部类持有外部类的引?
  7. json schema如何约束为小数_如何使用jsonschema进行接口响应断言
  8. 车载wince系统刷界面ui_UI入门秘笈,你想知道吗?
  9. JAVA和tomcat 环境变量配置
  10. Linux/Unix文件系统索引节点浅析
  11. 打开桌面计算机投屏到扩展屏,无线投屏新玩法——Windows电脑扩展屏幕投屏
  12. 史上最全的MathCAD安装教程
  13. 链接Maya和UE4实现real-time预览——Connecting Maya to Unreal with Live Link
  14. Altium designer--LM317/LM337封装图
  15. Costech A17T23SWB MTo
  16. du_Welch_cov_burg 功率谱估计 matlab
  17. 2023.3.5英语单词学习笔记
  18. html自动验证邮件地址格式,JavaScript表单验证和邮箱格式验证的方法
  19. 新唐NUC972 ARM9 内置DDR2 最大128MB 11路UART 电表 集中器 充电桩
  20. BZOJ - 4810 [Ynoi2017]由乃的玉米田 莫队算法 + bitset 大暴力

热门文章

  1. 机器学习实战 | 综合项目-电商销量预估进阶方案
  2. comsol matlab script,comsol script
  3. CAD看图软件的快速搜索功能怎么用?
  4. Error: DPI-1047: Cannot locate a 64-bit Oracle Client library: “问题
  5. DelayQueue实现原理及应用场景分析
  6. 测量string变量长度函数_测量字符串长度的函数
  7. python3 pdf转图片_Python 将pdf转成图片的方法
  8. 计算机网络共享无访问权限,Win7局域网访问WIN7共享文件夹提示无访问权限的多种解决方法...
  9. Apex-逃离塔科夫机器码彻底解决(年度最新讲解可观看)
  10. 交流电路有效值、最大值、平均值