一. 获取多个单元格的值报错:AttributeError: 'tuple' object has no attribute 'value'

需要读取的sample.xlsx

代码读取的是A3:B10之间的单元格

from openpyxl import load_workbook

wb = load_workbook(r"D:\python_workshop\python6\study\sample.xlsx")
sh = wb["Sheet"]

print(sh["A3":"B10"].value)

运行结果:
Traceback (most recent call last):
  File "D:/python_workshop/python6/study/demo.py", line 8, in <module>
    print(sh["A3":"B10"].value)
AttributeError: 'tuple' object has no attribute 'value'

二. 如何解决

上面报错信息是,元组对象没有属性"value",我们先来看一下print(sh["A2":"B10"]),得到的是一个元组,比较有意思的是,元组中的每一项也是一个元组,这个元组里存储的是每一行的单元格对象:相当于 元组(A3: B10) ——> 第三行:元组(A3: B3),第四行:元组(A4: B4)...第十行:元组(A10: B10)——>每一个单元格对象

print(sh["A3":"B10"])

运行结果:
((<Cell 'Sheet'.A3>, <Cell 'Sheet'.B3>), (<Cell 'Sheet'.A4>, <Cell 'Sheet'.B4>), (<Cell 'Sheet'.A5>, <Cell 'Sheet'.B5>), (<Cell 'Sheet'.A6>, <Cell 'Sheet'.B6>), (<Cell 'Sheet'.A7>, <Cell 'Sheet'.B7>), (<Cell 'Sheet'.A8>, <Cell 'Sheet'.B8>), (<Cell 'Sheet'.A9>, <Cell 'Sheet'.B9>), (<Cell 'Sheet'.A10>, <Cell 'Sheet'.B10>))

这种多层嵌套的形式,我们要想获得最里面单元格对象,就要用到双层for循环:

for item in sh["A3":"B10"]:            #item表示每一行的单元格元组
    for cell in item:                  #cell表示每一行的每一个单元格对象
        print(cell)                    #打印出每个单元格对象

运行结果:
<Cell 'Sheet'.A3>
<Cell 'Sheet'.B3>
<Cell 'Sheet'.A4>
<Cell 'Sheet'.B4>
<Cell 'Sheet'.A5>
<Cell 'Sheet'.B5>
<Cell 'Sheet'.A6>
<Cell 'Sheet'.B6>
<Cell 'Sheet'.A7>
<Cell 'Sheet'.B7>
<Cell 'Sheet'.A8>
<Cell 'Sheet'.B8>
<Cell 'Sheet'.A9>
<Cell 'Sheet'.B9>
<Cell 'Sheet'.A10>
<Cell 'Sheet'.B10>

得到单元格对象就好办了,只需要单元格对象.value,我们就可以获取单元格值。试试按照excel中的形式打印,得到的结果看起来很美观:

#用enumerate包装一个可迭代对象,可以同时使用索引和迭代项,在迭代的同时获取迭代项所在位置时非常方便
for index, item in enumerate(sh["A3":"B10"]):
    if index > 0:
        print("\n")
    for cell in item:
        print(cell.value, end=" ")

运行结果:
2018-05-10 电影 

hello world 小说 

hi 数据 

stop 美团 

bike 花生 

中国 电视 

测试 连续剧 

深圳 广告 

python如何获取多个excel单元格的值的更多相关文章

  1. python3 修改excel 单元格的值(xlsx)

    excel code #coding=utf- import os.path import os from openpyxl.reader.excel import load_workbook # e ...

  2. C# ASP.NET 读取EXCEL 单元格 读取 空值 不显示

    跟大家分享一下,[摘自]:http://blog.csdn.net/li185416672/article/details/8213729 读取excel时,某些单元格为空值 原来如此: 当我们用ol ...

  3. selenium获取html的表格单元格数据

    获取网页的表格的某个单元格的值,思路: 1.获取表格 2.获取表格的所有行 3.根据某一行获取该行的所有列 4.根据某一列获得该行该列的单元格值 根据以上思路,可以知道,只需要行.列就可以得到单元格的 ...

  4. python excel单元格及样式

    python excel单元格及样式: #!/usr/bin/env python # -*- coding: utf-8 -*-” #只对当前文件的中文编码有效 # Filename : Write ...

  5. C#中的Excel操作【1】——设置Excel单元格的内容,打开Excel文件的一种方式

    前言 作为项目管理大队中的一员,在公司里面接触最多的就是Excel文件了,所以一开始就想从Excel入手,学习简单的二次开发,开始自己的编程之路! 程序界面 功能说明 打开文件按钮,可以由使用者指定要 ...

  6. C# 对Excel 单元格格式, 及行高、 列宽、 单元格边框线、 冻结设置

    一.对行高,列宽.单元格边框等的设置 这篇简短的文字对单元格的操作总结的比较全面,特此转载过来. private _Workbook _workBook = null; private Workshe ...

  7. 简单介绍Excel单元格行列指示的实现原理(俗称聚光灯功能)

    原始出处:www.cnblogs.com/Charltsing/p/CellLight.html QQ:564955427 Excel单元格行列指示的实现原理(俗称聚光灯功能) 单元格行列指示功能在录 ...

  8. poi 升级至4.x 的问题总结(POI Excel 单元格内容类型判断并取值)

    POI Excel 单元格内容类型判断并取值 以前用 cell.getCachedFormulaResultType() 得到 type 升级到4后获取不到了 换为:cell.getCellType( ...

  9. vba打开excel文件遍历sheet的名字和指定单元格的值

    今天项目上有个应用,获取指定Excel文件下的所有sheet的名称以及当前sheet中指定单元格的值,并把他们写到固定的sheet中去,看了下,文件比较多,而且每个文件sheet的个数比较多,也不一样 ...

随机推荐

  1. IBM WebSphere cannot start in RAD 9.1

    Have solved the problem. Solutions follows Step 1: double click on "WebSphere Application Serve ...

  2. 微信开发模板--easywechat

    链接地址:https://easywechat.org/zh-cn/docs/installation.html

  3. 从B 树、B+ 树、B* 树谈到R 树(转)

      作者:July.weedge.Frankie.编程艺术室出品. 说明:本文从B树开始谈起,然后论述B+树.B*树,最后谈到R 树.其中B树.B+树及B*树部分由weedge完成,R 树部分由Fra ...

  4. boost之定时器和io_service

    1.定时器的使用,sleep是等待线程,asio封装了操作系统的异步系统调用select,epoll. io_servie 实现了一个任务队列,这里的任务就是void(void)的函数.Io_serv ...

  5. nodejs socket server 强制关闭客户端连接

    nodejs socket server 强制关闭客户端连接: client.destroy()

  6. 极速Node.js:来自LinkedIn的10个性能提升秘籍

    from:http://faylai.iteye.com/blog/1293194 1.避免使用同步的方法 nodejs 是基于单线程.为了让单线程能够处理高并发的请求,我们尽量要避免让线程等待,阻塞 ...

  7. active admin

    activeadmin 1.0.0.pre4 所依赖的库 gem 'jquery-rails', '~> 4.0.4' 4.2版本会出现找不到jquery-ui 的datepicker错误 使用 ...

  8. pyhton3 time模块

    来自:菜鸟教程 Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为 ...

  9. iOS 单例模式 学习 "52个方法 第6章 45条 使用 dispath_once 来执行只需运行一次的线程安全代码"

    百度定义:单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中一个类只有一个实例. 维基百科:在软件工程中,单例是一种用于实现单例的数学概念,即将 ...

  10. 每天一个Linux命令(52)telnet命令

        执行telnet指令开启终端机阶段作业,并登入远端主机.     (1)用法:     用法:  telnet [参数] [主机]     (2)功能:     功能:  telnet命令通常 ...