相信很多坐在办公室上班的朋友每天都需要处理大量的数据,我们常常用Excel制作电子表格来帮助我们处理它们。这当然是一种非常好的做法,但是我相信大家都会发现,很多表格的内容其实大同小异,常常需要我们把同样的数据复制进不同的表格里去,整理格式,然后提交给不同的人。这样没有意义的重复劳动会占用我们大量宝贵的时间。如果有什么人能帮我们把表格做好,我们只需确认一下是否有误然后提交即可,那么生活将会变得多么美好。

Openpyxl就是这样一个得力的工具。

这是一个由Eric Gazoni和Charlie Clark开发的,是目前使用最广泛的用Python操作Excel的库开源库,也是Pandas中默认读取表格数据的工具。

那么这个系列的文章——Python帮你做Excel——就是给大家提供一个简单的Openpyxl的入门中文教程,让大家能快速上手这个好用的小工具。这个基础教程的来源于Python Excel网站,再加入笔者的一些想法。有兴趣的朋友可以访问:

首先让我们一起看一下,如何使用Openpyxl读取Excel文档中的数据。

openpyxl基础概念Excel文件通常被称为电子表格,但在openpyxl中被称为工作簿

单个工作簿通常保存在扩展名为.xlsx的文件中

一个工作簿可能只有一个工作表,也可能有几十个工作表

活动工作表是用户正在查看或关闭文件前查看的工作表

每个工作表都由列组成,列的名字从A开始依次类推

每个工作表都由行组成,每个行从1开始编号,依次类推

行与列的交界处称为单元格。每个单元格对于对应的行和列就有了特定的地址。单元格内可以包含数字,公式或者文字

单元格组成的网格在excel中组成了工作区域或者说工作表

从Excel工作表中读取数据

首先我们假设建一个Excel文件,命名为testfile.xlsx。

以上是testfile.xlsx的数据,你可以新建一个excel文件并把数据填进去。 不过在正式使用openpyxl读取这些数据之前,如果你不知道python的根目录在哪,你可以在prompt(中文可以理解为命令提示符,或对话框)中输入如下代码

>>>import os

>>>os.getcwd( )

上述操作会在python中导入操作系统包,然后os.getcwd( )会读取当下的工作地址(get current working directory ——> getcwd() )。随后python会告诉你当下的工作地址,输出的结果可能会是这样

'C:\\Python36'

如果你想更换工作地址,就需要使用命令os.chdir()。比如你想读取一个在C盘根目录下的一个叫做myfiles的文件夹里的文件,那么你可能就可以输入

>>>os.ch.dir("c:/myfiles")

现在你就可以对C盘里myfiles文件夹里的文件进行工作了!

用Python打开Excel文件

首先我们需要用这个语句在python中导入openpyxl模块

>>> import openpyxl

如果没有错误信息提示,那就表示openpyxl模块安装正确,并且可以对excel文件进行操作了。接下来需要做的是载入工作簿testfile.xlsx

>>>wb= openpyxl.load_workbook('testfile.xlsx')

openpyxl.load_workbook()是一个函数,它将文件名作为参数读入然后返回一个工作簿的数据类型(workbook datatype)。工作簿数据类型实际上与python打开文件对象的类型是一样的,使用下述的语句可以看到对handle的说明:

>>type (wb)

上面的第二行文字应该会显示在对话框中,此处我们对前面所有输入的命令进行个简单的汇总展示

>>> import os

>>> os.getcwd()

'C:\\Python34'

>>> import openpyxl

>>> wb=openpyxl.load_workbook('testfile.xlsx')

>>> type(wb)

>>>

从加载的工作簿访问工作表

现在我们已经能够访问excel文件了,现在我们可以尝试读取文件里的数据。首先,如果想要访问工作簿中工作表的数量以及它们的名字,可以使用函数get_sheet_names()。这个函数会返回工作表的名字,当然你也可以数出工作表的总数。完整的代码是这样的

>>> wb.get_sheet_names()

['Sheet1', 'Sheet2', 'Sheet3']

可以看到函数返回了三个工作表的名字,也就是说工作簿内只含有三个工作表。那么现在你可以尝试多操作几次,比如手动修改这些工作表的名字,然后保存文件,随后用上述代码重新加载文件,看看工作表的名字是否有变动,当然此处就不再多加赘述了。 在知道了工作表的名字之后,我们可以访问其中的任何一个工作表了。假设我们想要访问Sheet3,代码就应该是

>>> import openpyxl

>>> wb=openpyxl.load_workbook('testfile.xlsx')

>>> wb.get_sheet_names()

['Sheet1', 'Sheet2', 'Sheet3']

>>> sheet=wb.get_sheet_by_name('Sheet3')

函数get_sheet_by_name('Sheet3')可以访问一个特定的工作表,它接收工作表的名字作为输入,然后返回一个工作表对象。我们将其赋值给sheet变量,然后就可以对它进行下述操作

>>> sheet

>>> type(sheet)

>>> sheet.title

'Sheet3'

>>>

如果只输入sheet,那么就会输出,该变量指向哪个工作表。在这里例子里,对话框就会返回工作表"Sheet3"。如果想要知道该变量的类型,则输入type(sheet),此时就会返回变量sheet指向什么对象。sheet.title会返回sheet的标题。 另外,如果我们想访问活动的工作表,可以使用下述代码,对话框就会返回活动工作表的名字了

>>> wb.active

访问工作表单元格中的数据

从工作表单元格中访问数据,首先应用工作表,然后输入单元格的地址,具体展示如下

>>> sheet['A2'].value

datetime.datetime(2014, 7, 6, 4, 50, 30)

还有访问单元格数据的另一个方法

>>> e=sheet['B2']

>>> e.value

'AB'

>>> e.row

2

>>> e.column

'B'

>>>

还可以使用cell()函数,将row和column作为参数输入,读取单元格数据

>>> sheet.cell(row=2, column=4)

>>> sheet.cell(row=2, column=4).value

'Pencil'

现在让我们来尝试输出整列的数据,当然,此处需要使用到循环语句。输出整个列的代码展示如下

>>> for x in range (1,9):

print(x,sheet.cell(row=x,column=4).value)

1 Item

2 Pencil

3 Binder

4 Pencil

5 Pen

6 Pencil

7 Binder

8 Pencil

>>>

在输出了整列数据后,现在可以尝试输出多列的数据了。由于我们的文件很小,所以我们就输出完整的表格。详见下方代码

for y in range (1,9,1):

print(sheet.cell(row=y,column=1).value,sheet.cell(row=y,column=2).value,

sheet.cell(row=y,column=3).value,sheet.cell(row=y,column=4).value,

sheet.cell(row=y,column=5).value, sheet.cell(row=y,column=6).value,

sheet.cell(row=y,column=7).value,sheet.cell(row=y,column=8).value)

这些代码可以输出工作表中的所有列,那么至此,我们已经访问了excel文件,将其载入内存,访问工作表以及单元格里的数据。下一章节,我们将详细讲述如何用python将数据写入excel文件。

敬请期待啦!

python无法读取excel文字_Python帮你做Excel——读取Excel文档相关推荐

  1. python读取word文档并做简单的批量文档筛选

    python读取word文档并做简单的批量文档筛选 最近参与了一项解析大量的word文档(试验报告形式)的工作,因为其中包含着一些对项目无意义的报告,所以要进行初步地筛选,通过查阅资料发现了pytho ...

  2. 如何用计算机扫描图片变成文字,如何把文字图片或者扫描的文件变成word文档?详细步骤...

    我们在日常工作,有时候会遇到需要把文字图片或者扫描的文件变成word文档,最笨的方法就是一个一个字的打到word文档,有一些图片的文字是可以在搜索引擎上找到的,但是首先这个需要运气好.不过,现在小编就 ...

  3. 计算机毕业设计Python+djang公务员考试信息管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着社会的发展,近些年来的毕业生大多数会选择考研,考公员和考试教师资格证以增加自己在未来社会中的竞争能力.为了让这些有志之士能够有一个更好的学习和交流平台,我们通过计Python+djang ...

  4. 全国计算机一级电子表格教程,全国计算机等级考试一级教程-Excel的使用(93页)-原创力文档...

    第4章 Excel 2010 的使用 全国计算机等级考试一级教程 一 级 等 考 , 计算机基础及MS Office应用 4.1 Excel 2010 概述 4.2 电子表格的基本操作 4.3 电子表 ...

  5. 计算机毕业设计Python+django的火车票售票系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着现代火车售票管理的快速发展,可以说火车售票管理已经逐渐成为现代火车售票管理过程中最为重要的部分之一.但是一直以来我国传统的火车售票管理并没有建立一套完善的行之有效的火车售票管理系统,传统 ...

  6. c# npoi 2.5版本设置字体加粗_Python帮你做Excel——格式设置与画图

    之前两篇文章已经向大家讲解了如何利用python读取和写入数据,本次就向大家介绍一下如何使用openpyxl对excel文件进行设置,以及如何在excel文件中绘制图表. 设置字体 使用python对 ...

  7. python离线录音转文字_Python将文字转成语音并读出来的实例详解

    前言 本篇文章主要介绍,如何利用Python来实现将文字转成语音.将文字转成语音主要有两种不同的实现方法:先将文字转成语音,然后再通过读取语音实现发音.直接调用系统内置的语音引擎实现发音,后一种方法的 ...

  8. python批量识别图片中文字_Python识别图片中的文字

    一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...

  9. python怎么读取word文件_python之python-docx编辑和读取word文档

    python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. 使用python新建一个word文档,操作就像文档里介绍的那样:1 from docx import Do ...

最新文章

  1. spring boot mysql和mybatis
  2. 软件工程课程学生信息
  3. s4-介质访问控制子层-1 MAC子层
  4. Java后端带参跨域访问_java后端解决请求跨域
  5. Mathematica图片局部变色
  6. NLP实战-中文新闻文本分类
  7. python-深浅拷贝
  8. PHP创建与解析 XML 1 (36)
  9. iOS11新特性之LargeTitle
  10. Oracle Library cache 内部机制 说明
  11. Asp.Net Core 入门(八)—— Taghelper
  12. 世界上最好的惯性动作捕捉设备Xsens,你不应该错过的Xsens MVN Animate Pro
  13. 双系统——彻底删除ubuntu
  14. 七款好看文字样式纯css
  15. Linux下文件压缩、打包,看这一篇就够了
  16. 如何下载哔哩哔哩的视频
  17. 图片中不规则区域的点击
  18. 嵌入式系统232串口测试笔记
  19. latex常见错误之缺少sty文件
  20. 修改latex表格内容无衬线字体

热门文章

  1. 操作系统真实的虚拟内存是什么样的(一)
  2. Dell戴尔笔记本电脑G15 5520原装出厂Windows11系统恢复原厂OEM系统
  3. 首个6G白皮书发布,6G长啥样?
  4. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(二)-docker安装与学习
  5. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(十)-Java反序列化漏洞(2)
  6. OpenCV开发笔记(四十一):红胖子8分钟带你深入了解scharr滤波器算子边缘检测(图文并茂+浅显易懂+程序源码)
  7. 算法85----手机九宫格
  8. VMware无法启动虚拟机的解决办法
  9. vue的五个小实例解析其基础功能
  10. python爬虫:获取菜鸟网站上url