什么要学会使用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. JS计算加减乘除出现多位小数的解决方法

    function add(arg1, arg2){ let decima1, decima2, differ, m; try { decima1 = arg1.toString().split('.' ...

  2. 格式化 ceph osd 盘报错stderr: wipefs: error: /dev/sdc: probing initialization failed: Device or resource busy

    1.格式化 ceph集群osd盘 出现设备繁忙,只能手动清空磁盘并重启 格式化:ceph-volume lvm zap /dev/sdc dd 手动清空磁盘:dd if=/dev/zero of=/d ...

  3. 工作随笔1-从slave备份,恢复成新得从库

    innobackupex --slave-info --safe-slave-backup --no-timestamp tmp_lastinnobackupex --apply-log tmp_la ...

  4. 12.1linux学习第十二 天

    8.2 Iptables 在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙.尽管新型的firewalld防火墙管理服务已经被投入使用多年,但是大量的企业在生产环境中依然 ...

  5. wrangler 13 mwz 脱浆记录

    100度水泡了1个小时,一点没缩 70度水泡了3个小时,一点没缩 随后绝望,放洗衣机里洗了20min,缩了2cm 想再接再厉,放洗衣机30min,没缩 放外面晾干,看晾干以后多长吧 --------- ...

  6. pretty break

    scale_x_continuous( breaks = pretty_breaks(10),labels=scales::comma)+ x <- 1:4 y <- c(0, 0.000 ...

  7. ios装包

    一.下载爱思助手 二.找到本机设备 注:如果未弹出允许.拒绝调试选项可尝试换根数据线解决 三.将对应包体文件拖入本机设备

  8. BeanFactory与FactoryBean区别

    1. BeanFactory BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于管理Bean的一个工厂.在Spring中,BeanFactory是IOC容器的核心接口,也是 ...

  9. Python学习笔记-argparse模块

    Python学习笔记-argparse模块 optparseargparse 昨天学习了一个简单的端口扫描器的脚本,其中涉及到了optparse模块,网上关于此模块的介绍已有很多,但这个模块已经不更新 ...

  10. GRAPH ATTENTION NETWORKS(GAT)图注意力网络

    摘要: 我们提出一个图注意力网络,一个新的用来操作图结构数据的神经网络结构,它利用"蒙面"的自我注意力层来解决基于图卷积以及和它类似结构的短板.通过堆叠一些层,这些层的节点能够参与 ...