xlrd读取所有sheet名_人生苦短我学Python——Excel处理之快速创建多个Sheet并重命名...

0d772055a749e96c0956145504ae59f0.png

自打Python环境准备好之后,就在跟着网上的菜鸟教程学习基本操作、基本概念。学习的过程比较乏味,因为暂时还没有成型的东西,除了感慨Python真神奇,可以打印出各种东西之外,还没能从Python中获利,即还没有真正用Python解决工作生活当中的实际问题。

此时,正巧碰到同事求助,他的第一个困惑是:需要在一个Excel中建若干个Sheet页,并且Sheet名需改为约定的名称。

什么?这还不简单,打开Excel,Shift+F11,嗖嗖嗖N个Sheet新增完成。

那修改Sheet名呢?有快捷键吗?这我还真不知道,如果你知道请告诉我。目前已知有且仅有逐个Sheet双击修改这一操作方式。这波操作,及其简单,如果是三五个也就很快完成了,但如果是三五十个?三五百个呢?(PS:谁会没事在Excel理建三五百个Sheet啊)

这种重复的、机械的双击修改几百次的操作大家肯定是不愿意做的,那么经过研究尝试,这里就给大家介绍一种用Python操作Excel的方法!

01 强大的“模块”

先引入“模块”这一概念。Python之所以火热,我想跟它拥有众多“模块”可供开发者使用有一定关系。那么“模块”到底是什么呢?

模块主要由类和函数组成,表现形式为:写的代码保存为文件。这个文件就是一个模块。*****.py 其中文件名*****为模块名字。

模块中一般会包含如下代码

if __name__=="_main_":

这个文件既可以被其他程序调用,也可以独立运行。

懂了吗?实话说,我完全看不懂。但我自己的理解就是:模块是一段别人已经写好的代码,可供我们直接安装使用,让我们不必从零开始编写代码,避免“重复造轮子”。相关的概念还有包、库、框架,具体含义请见附注,由于目前我也每太弄清楚,因此也就暂时不展开了。

模块可在https://pypi.org/搜索及获取,其安装方法有好多种,比如pip在线安装、whl文件下载安装、tar.gz文件安装等,具体操作网上都有,我也就不赘述了。

0890f58d5b7c89e459d36a6571c99461.png
https://pypi.org/首页

02 xlrd/xlwt和openpyxl

了解了模块的概念之后,我们就来看看操作Excel所用到的具体的模块。在百度上搜索处理Excel的Python模块,基本推荐的都是xlrd/xlwt和openpyxl。这两种模块都能进行Excel文件的操作,那么他们有什么差异呢?

区别一:写入操作。其中xlwt针对Excel2007之前的版本,即.xls文件,其要求单个Sheet不超过65535行,而openpyxl则主要针对Excel2007之后的版本(.xlsx),它对文件大小没有限制。

区别二:读写速度。xlrd/xlwt在读写方面的速度都要优于openpyxl,但无法生成xlsx。所以想要尽量提高效率又不影响结果时,可以考虑用xlrd读取,用openpyxl写入。

由于是第一次使用Python操作Excel,暂时对速度没有要求,因此本次将使用openpyxl。

03 切入需求

说了这么多,终于到了需求实现的阶段了。针对同事的需求,若转化为程序,需要如下步骤:

1、打开Excel

2、获取Sheet1的内容(Sheet1第一列存放需要新建的所有Sheet名称)

3、新建Sheet,并按Sheet1第一列的内容进行重命名

4、保存Excel

话不多说,先上程序和结果。

b678f1cc2c62330aa51d2be46ee915c4.png
Python程序

9356bb4155041ae617fec1bfec45dccd.png
最终生成的Excel

程序很简单,我都用注释所标注了,与刚才的四步骤一一对应,一步一行代码。可能这就是Python的魅力:简洁高效。接下来,跟大家分享几个我在写这一小段程序中所遇到的问题及解决方法。

04 No such file or directory?

No such file or directory。产生这个错误的原因是程序找不到你的Excel在哪。因为程序只会去相对路径即Pycharm的项目文件夹去搜索,如果没有就会报错。解决方法也很简单:改一下路径或将文件路径写全。如果需要修改路径,就要用到强大的os模块,引入模块后用os.chdir即可修改路径,用os.getcwd()可获得当前路径。

f51a8f3647df42d1bd1175d60f272f26.png

05 路径前的r是什么?

在Python中,反斜杠()被看作是一种转义符。所谓转义,就是使字符、格式等与其原来意义不同,转变为另一种含义。来看两个简单例子:n 代表换行;t 代表空格。

dab9e913929ca6f4be50f805a80e178d.png
n与t举例

d5f34281b0ffc888060c6cfd1a11dd00.png
执行结果

那么问题来了,所有反斜杠()都被当作转义符,那如果我真的想输入输出反斜杠()怎么办呢?这就是r的意义:用在字符串前,表示取消转义。与r同样作用的还有,即转义的转义,是不是很好理解?另外,如果是反斜杠是用在文件路径上,还可以用正斜杠来代替反斜杠,咱们的计算机也是可以识别这种路径地址的。

1ddc6dfd82a3bb1d00c3e9146fc2dee3.png
r、、/举例

f2dc93d546bb2fb92ed29be3508ad692.png
执行结果

06 进阶一下

怎么样?用Python实现这个需求是不是很简单呢?但是,细心的你是不是发现了,这个程序如果执行多次,也会建多个Sheet,”机智“的系统会在同名Sheet后加个1变成一个新的Sheet,即“名称1”再执行一次变成“名称11”,再一次变成”名称111“,以此类推。但其实我们并不是想要这样,而是遇到同名的跳过。那此时,我们还需要加个判断语句:当不重名时创建,否则跳过。

a7449f46434da43fa4a219f670e7b40f.png

至此,整个需求就完全满足了。是不是很简单?不妨自己动手试一试呢!

附 模块&包&库&框架

1、python模块(module)

模块主要由类和函数组成,表现形式为:写的代码保存为文件。这个文件就是一个模块。*****.py 其中文件名*****为模块名字。

模块中一般会包含如下代码:

if __name__=="_main_":

这个文件既可以被其他程序调用,也可以独立运行。

2、python包(package)

包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。

3、python库(lib)

库的概念比较抽象,库是实现一定功能的包或模块,库的功能没有框架强大。

4、python框架(framework)

框架跟库类似是从功能上来说的,框架往往集成了多种库的功能,框架是用来辅助开发某个领域功能的一个包,一般包内还会含有多个子包。框架会方便开发,将某类项目中必须实现的代码直接实现,你只需要去关注你与别项目不同的部分。如爬虫框架scrapy、web开发框架Django和flask、大数据框架pyspark等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值