什么要学会使用Excel
在机器学习模型的建立中,不得不借助于Excel强大的统计分析能力,这个时候就牵涉到了如何将python直接处理得到的数据存入excel表格当中以及获取表格的数据进行分析,简单的说,学会使用Python操作Excel文件后,可以运用到机器学习之中,也可以让平常生活中繁琐的工作自动化处理。

Excel的基本使用
Python处理Excel的包是openpyxl,如果你是直接下载的anaconda安装的Python库,那么下载的时候,自带的就已经安装了openpyxl,如果不是,也可以直接在cmd之中,使用pip install openpyxl安装。

安装完成之后,我们应该了解一下Excel的组成部分,如下图所示:

看到上图就应该知道,首先,我们应该获取Excel文件:

wb=openpyxl.load_workbook('1234.xlsx')
对于已经有Excel目标文件来说,使用以上方法,就可以直接获取excel文件,如果你想重新创建一个全新的Excel文件,不妨试试以下方式:

wb=openpyxl.Workbook()
已经获取了Excel,但其实我们的数据都在一个一个的表中,如下图所示:

一个Excel文件中可以有多个表,一般而言操作的都是第一个表,而获取表的方法也有很多,比如:

sheet=wb.worksheets[0]

sheet=wb['吸入类']
以上两种方式都是获取第一个表,要是我们使用wb=openpyxl.Workbook()方式,新创建的一个Excel呢?我们需要创建一个操作的表格:

wb.create_sheet(index=0,title='小猪')

wb.create_sheet(index=1,title='佩奇')
当我们获取表格之后,就可以快乐的操作我们的数据了。

比如这个时候,你想获取表格中的A1单元格中的文本,就可以使用如下方法:

sheet['A1'].value
以上是获取单个单元格的数据,现在我有一个需求,要遍历某个表格中的所有数据,该怎么操作呢?这里我们先假如我有如下表格:

那么遍历起来的代码如下:

import openpyxl

wb=openpyxl.load_workbook('1234.xlsx')
sheet=wb.worksheets[0]
for row in sheet.iter_rows():
for cell in row:
print(cell.coordinate, cell.value)
上面是逐行遍历,首先我们获取Excel文件,然后获取当中的第一个表格,然后通过获取行数,以及列数进行遍历,openpyxl获取行数的方法为sheet.iter_rows(),获取列数可以直接通过当前行获取也就是for cell in row,代码简洁明了,实现效果如下:

那么怎么修改数据呢?我们先来看看代码:

sheet['A1'].value='1111111'
sheet.cell(1,1).value='1111111'
sheet.cell(1,1,'111111')
这三种方式,都可以修改Excel某个单元格数据,同时也可以通过前两种方式获取到这个单元格的值,python的优点就是这么简单明了。

经过这些操作之后,我们还有一个事情要做,那就是如果保存我们创建,或者修改过后的Excel,其实也很简单,一句话就可以做到,代码如下:

wb.save('1234.xlsx')
这样就将操作的数据,保存到当前目录之下的1234.xlsx中,同样写绝对路径也行。

Excel的样式
在平常的生活当中,Excel表格并不仅仅是写入数据,修改数据,保存数据这样简单的操作,其实还有如果让Excel变的更加美观,比如修改某些字体,边框样式等等等等。

字体样式
那好,我们先来说说如何修改字体这样的样式,我们openpyxl里面有专门的字体样式,可以通过以下方式导入,使用的代码如下:

from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
font = Font(name='微软雅黑', size=10, bold=False, italic=False, vertAlign=None,
underline='none', strike=False, color='FF000000')
这里我们先引入了Excel中的字体样式,然后通过构造函数,创建了一个样式,比如这里创建的字体为微软雅黑,字体大小为10,不加粗,没有斜体,没有下划线,没有删除线,颜色为黑色。

尽然我们创建了一个样式,接下里就是将样式设置到单元格中去,比如将刚才的样式设置到表格11单元格中,以下两种方式都行,代码如下:

sheet['A1'].font=font
sheet.cell(1,1).font=font
填充样式
说完字体样式,第二个运用最多的就是填充样式,比如给某个单元格填充背景色,或者填充图案等等等等,我们先来看看代码的操作方式:

fill = PatternFill(fill_type='darkUp',start_color='FFFF00',end_color='FF0000')
sheet.cell(1,1).fill=fill
这段代码实现的样式如下:

可以看到它的图案类型为darkUp,开始颜色行色,结束颜色为红色,红黄相间的格栅化样式填充,当然它的图案类型还有很多,以下都是:

{‘gray0625’, ‘lightHorizontal’, ‘darkVertical’, ‘darkGray’, ‘darkDown’, ‘solid’, ‘lightTrellis’, ‘darkHorizontal’, ‘gray125’, ‘lightGray’, ‘lightDown’, ‘lightUp’, ‘mediumGray’, ‘darkUp’, ‘darkGrid’, ‘darkTrellis’, ‘lightVertical’, ‘lightGrid’}
具体用到哪个,还要根据你的需求自由的选择,重点需要说明的是,当图案为solid时,默认只填充start_color颜色,也就是黄色,有兴趣的可以试试。

边框样式
第三个要介绍的就是边框样式,边框样式在实际的工作中,可以说也是用的比较多的,了解一下对于实际的工作还是有好处的,操作代码如下:

border = Border(left=Side(border_style='dashDotDot',color='9932CC'),
right=Side(border_style='dashDotDot',color='121212'),
top=Side(border_style='dashDotDot',color='8B0A50'),
bottom=Side(border_style='dashDotDot',color='B3EE3A'),)
sheet.cell(5,4).border=border
上面设置了上下左右四个边框的颜色以及样式,这里我都设置为虚线样式,颜色随机抽取了四个比较深的颜色,实现的效果如下图所示(上红,下绿,左紫,右黑):

当然边框还有很多参数的,如果想运用的更多更广,可以参考openpyxl开发文档,博主这里只介绍最常用的边框样式。

对齐样式
最后一个样式为对齐样式,相对于上面三种样式来说,这个对齐样式每次几乎都用到,现在我们先来弄一个单元格居中对齐,代码如下:

alignment = Alignment(horizontal='center',
vertical='center',
text_rotation=0,
indent=0)

sheet.cell(5,3).alignment=alignment
这里我们设置了对齐样式为水平居中,垂直居中,文字旋转角度为0(最多可以旋转180°),缩进为0,比如旋转90度,文字就变成了如下图所示的样式:

当然这种对齐样式还有许多其他参数,但用的最多的也就是这些,如果想了解其他的请前往openpyxl开发文档了解最详细的参数。这里就不做过多的赘述了。

Excel公式
链接公式
样式说完了,我们还需介绍一下Excel公式的应用,比如我们有些Excel表格中有链接,就需要用公式把链接设置成可以点击的超链接模式,同样比如计算某些值的时候,也会用到Excel公式。我们先来讲解以下如何让URL链接可以点击,代码如下:

sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("https://www.baidu.com", "百度一下")
上面代码理解起来很简单,就是我要在第六行第三列输入百度一下,且百度一下可以点击跳转到指定的网页之中(第一个参数就是需要跳转的地址)。

这里其实就是excel中的公式,当然你也可以设置某个目录下的exe文件,点击后直接执行exe,也可以设置跳转到某个单元格,比如想点击后跳转到A1,代码如下:

sheet.cell(6,3).value='=HYPERLINK("%s","%s")' % ("#A1", "跳转到A1")
计算公式操作
现在我还有一个需求,比如我要计算下面表中A1到E1这5个数的和,在Excel应该怎么操作呢?

其实也和上面一样,只要你知道Excel中的计算和公式,就可以直接套用到代码中,这样哪怕是编程小白,也基本可以掌握公式的应用规则,因为只要会Excel的都会知道,代码如下:

sheet['F1']='=SUM(A1:E1)'
Excel单元格的合并与拆分
Excel估计已经介绍的差不多了,不过博主刚刚想起来,应该还有一个常用的操作方式,就是合并单元格,这里我们同样先来看一段代码:

sheet.merge_cells('A1:E1')
合并也是操作表结构,这里合并刚上面那个表的数字,可以看到我们合并了A1到E1的所有单元格,同时,合并后的单元格显示第一个单元格内容。

熟话说得好,有合并就有拆分,同样我们也需要拆分单元格,那这样,我们就把先合并的单元格,在拆分成原来的样子,代码如下:

sheet.unmerge_cells('A1:E1')
很简单,代码前面加一个un就行,但这里有一个需要注意的地方,刚合并单元格,默认填充的是第一个单元格中的数据,但拆分单元格,并不会自动填充数据,原先有的整个数据显示在第一个单元格之中,而其他拆分出来的单元格,不会显示任何数据。

总结了这么多,相信对经常使用Excel的小伙伴应该会有所帮助,如果写的还可以记得给点个赞!

文章知识点与官方知识档案匹配,可进一步学习相关知识
————————————————
版权声明:本文为CSDN博主「李元静」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyuanjinglyj/article/details/87895700

Python最详细的Excel操作方式,的更多相关文章

  1. Python利用pandas处理Excel数据的应用

    Python利用pandas处理Excel数据的应用   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...

  2. python基础 实战作业 ---Excel基本读写与数据处理

    代码地址如下:http://www.demodashi.com/demo/11650.html 看完本篇需要: 10min 作业练习需要: 0.5h~3h(依练习者对python熟悉程度而定) 看完本 ...

  3. python合并多个excel

    前言 1.工作中,经常需要合并多个Excel文件.如果文件数量比较多,则工作量大,易出错,此时,可以使用Python来快速的完成合并. 2.使用方法:将需要合并的多个Excel文件放到同一个文件夹下, ...

  4. Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  5. 使用python将多个excel合并

    最近看视频学习,老师布置了个作业,关于如何使用python将多个excel进行合并,老师写的代码我感觉比较复杂,下面是我自己改良之后较简单的方式. 实现这个功能主要有两种方法,一种是用xlwd,xls ...

  6. python读写word、excel、csv、json文件

    http://blog.csdn.net/pipisorry/article/details/50368044 python读写word文档 (include wps)将word文档转换成txt文档 ...

  7. python使用xlrd读取excel数据时,整数变小数的解决办法

    python使用xlrd读取excel数据时,整数变小数: 解决方法: 1.有个比较简单的就是在数字和日期的单元格内容前加上一个英文的逗号即可.如果数据比较多,也可以批量加英文逗号的前缀(网上都有方法 ...

  8. 【python-excel】Selenium+python自动化之读取Excel数据(xlrd)

    Selenium2+python自动化之读取Excel数据(xlrd) 转载地址:http://www.cnblogs.com/lingzeng86/p/6793398.html ·········· ...

  9. 【转发】Python使用openpyxl读写excel文件

    Python使用openpyxl读写excel文件 这是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装.如果使用Aanconda,应该自带了. 读取E ...

  10. 利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

随机推荐

  1. Java 中的内存分配

    Java 中的内存分配 Java 程序运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式. 一.栈:储存局部变量 局部变量 ...

  2. vue上传图片组件

      <template> <!-- 上传控件 用法: <upload-widget v-model="imgUrl"></upload-widg ...

  3. getElementsByClassName()获取不到值

    在这种方式下,虽然使用了getElementsByClassName方法,但是并不能获得到值.从执行顺序上来说,在HTML还没有执行的时候JS就已经开始执行了,所以获得的值不能够获得到.因此,如果遇到 ...

  4. nodejs的增删改查

    1.新建一个jwttest.router.js 引入toast const {success,fail} = require("../toast"); const jwt = re ...

  5. MTS和MTO的差别

    一.概念篇 MTS(Make-to-Stock): 按库存生产 可以独立创建计划.生产订单,可以如非限制使用的库存,并且发货等不受限制. 生产的成品或者半成品在系统中建有BOM,开工单生产后记入库存, ...

  6. jsp第三个作业

    main.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf ...

  7. JAVA面经-基础篇-线程

    1.创建线程有哪几种方式?   创建线程有3种方式,分别是继承Thread类.实现Runnable类.实现Callable类.   继承Thread类的步骤:     1. 定义Thread类的子类, ...

  8. STL练习-ACboy needs your help again!

      ACboy was kidnapped!! he miss his mother very much and is very scare now.You can't image how dark ...

  9. Android 自定义View (二)

    一.前言 上节 通过一个简单的旋转环对自定义view作了一个基本的认识,本文将大致讲解下实现的思路以及对该view的一些可能的改进. 二.思路 主要通过重写 view 中的 onDraw() 方法,利 ...

  10. 解决vue项目中文出现乱码

    出现中文乱码的文件以ediplus打开,右上方有点击file选择sall As....另存为 下方有encoding 选择utf-8 ,覆盖以前的文件,就好了.