前段时间做了个小项目,帮个海洋系的教授做了个数据处理的软件。基本的功能很简单,就是对Excel里面的一些数据进行过滤,统计,对多个表的内容进行合并等。之前没有处理Excel数据的经验,甚至于自己都很少用到Excel。记得《Python核心编程》的最后一章里有讲到用Win32 COM操作office, 看了一下讲的不是很清楚。google了一下找到不少能处理excel数据的模块。对比了一下最终选定了openpyxl,openpyxl专门用于处理Excel2007及以上版本产生的xlsx文件。不幸的是我所得到的数据中xls和xlsx都有,不过转换并不是什么难事,就暂时吧这个问题忽略了。

模块的安装过程非常简单,官网上有简单的使用说明和API文档,整体来说使用非常容易,也基本能满足我的需求。对于Excel文件,我所需要的只是从中将相应位置的数据读取出来,以及把数据写入到对应的位置中去。而其间数据的处理,通过python可以很容易地完成。

1. Excel数据的类型及组织方式

openpyxl中定义了多种数据格式,我只涉及到了其中最重要的三种:

NULL: 空值,对应于python中的None,表示这个cell里面没有数据。

numberic: 数字型,统一按照浮点数来进行处理。对应于python中的float。

string: 字符串型,对应于python中的unicode。

每一个Excel数据文件从上至下分为三个层级的对象:

workbook: 每一个Excel文件就是一个workbook。

sheet: 每一个workbook中可以包含多个sheet,具体就对应Excel中我们在左下脚所看到的“sheet1”,“sheet2”等。

cell: 每一个sheet就是我们通常所看到的一个表格,可以含有m行,n列,每个确定的行号,列号所对应的一个格子就是一个cell。

2. 从Excel中读取数据

从一个既有的xlsx文件中读取数据,按照Excel文件的三个层级,分别做以下三个步骤

1. 打开workbook:

from openpyxl import load_workbook

wb = load_workbook('file_name.xlsx')

2. 打开所需的sheet:

我们可以这样打开workbook中的第一个sheet:

ws = wb.get_active_sheet()

变量_active_sheet_index用来确定获取哪一个sheet,而默认情况下它被置为0。

也可以通过sheet的名称来获取sheet:

ws = wb.get_sheet_by_name("sheet_name")

openpyxl似乎没有提供按索引来读取sheet,不过我们总是能很容易地通过sheet_name来实现:

sheet_names = wb.get_sheet_names()

ws = wb.get_sheet_by_name(sheet_names[index])

3. 获取对应cell的值:

openpyxl提供可两种方式来读取cell,一是按照Excel的习惯用字母来代表列号,例如:

c = ws.cell('A4').value

也可以按照行号列号来读取:

d = ws.cell(row = 3, column = 0)

3. 将数据写入Excel

同读取类似,写入一个Excel文件,要经历一下四个步骤:

1. 新建workbook

直接新建一个workbook对象即可:

wb = Workbook()

2. 新建sheet

默认情况下,新创建的sheet是排在最后的,若想要创建一个排在最前的sheet,可以传入参数0:

ws1 = wb.create_sheet() # insert at the end

ws2 = wb.create_sheet(0) # insert at the first position

3. 写入数据

直接将要写入的数据赋值给相应的cell即可,若仅仅是修改一个表。可以跳过前两个步骤,不过要注意不要覆盖掉其它数据:

ws.cell('B5') = value1

ws.cell(row = 3, column = 7) = value2

4. 保存数据

最后写入将数据写入即可,注意若保存路径下有同名的文件的话,之前的文件会被覆盖:

wb.save('file_name.xlsx')

python2读取excel中文处理_Python处理Excel数据相关推荐

  1. php读取excel中文匹配_PHP根据Excel表头指定的字段,自动匹配数据

    背景 在使用PHP解析Excel数据的时候,经常期望能把Excel中的数据自动和数据库字段建立上映射关系: 比如下图一 - Excel文件,图二 - 数据库字段 如果读取Excel后直接返回下面的数据 ...

  2. python excel详解_python操作excel详解

    前提: python操作excel需要使用的模块有xlrd.xlwt.xlutils.对excel进行读.写.更新操作.操作excel时需要先导入这些模块,demo如下: excel-读操作知识点: ...

  3. excel sheet限制_Python 处理Excel内的数据(案例介绍*3)

    点击上方"蓝字"关注我们了解更多精彩案例一介绍 现在有一批电商产品跟当日销量的数据,如下,总共有上万笔的数据,现在需要统计每个品牌当日的销售量,比如美宝莲今天总共卖出了多少的商品, ...

  4. python做excel表格代码_Python读写Excel表格

    最近在做一些数据处理和计算的工作,因为数据是以.CSV格式保存的,因此刚开始直接用Excel来处理. 但是做着做着发现重复的劳动,其实并没有多大的意义,于是就想着写个小工具帮着处理. 以前正好在一本书 ...

  5. python 拆分excel工作表_Python将一个Excel拆分为多个Excel

    本文实例为大家分享了Python将一个Excel拆分为多个Excel的具体代码,供大家参考,具体内容如下 原始文档如下图所示 将销售部门一.二.三科分别存为三个Excel 代码如下 # -*- cod ...

  6. python根据excel生成报表_python生成Excel图表(通过xlsxwriter)

    前面介绍了pandas的简单用法,pandas的数据可以通过matlab第三方包将数据生成报表,但是我想将报表生成在Excel中,这时候就可以借助xlsxwriter第三方包来生成图标 缺点:xlsx ...

  7. python 做excel可视化报告_Python操作Excel制作可视化数据图,实现自动化办公

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT入门 安装 操作一个简单的Excel文档 操作注释及代码: 操作完成后,数 ...

  8. python做excel表格柱状图_Python openpyxl Excel绘制柱形图

    这是一份openpyxl的使用指南. 柱形图 数据会被绘制成垂直,水平或者是层叠效果的柱形图. 注意: 接下来的设置会影响到不同类型的图表. 设置类别可以控制柱形图是垂直或是水平. 使用层叠图形时,需 ...

  9. python excel截图保存_python 对excel进行截图

    工作中需要对excel的单元格区域进行截图,以前是调用vba进行(走了很多弯路,虽然能实现,但比较low),后来逐步发现python的win32com与vba师出同门,很多方法操作都是类似的. 可以对 ...

最新文章

  1. 怎样让webservice在浏览器远程浏览时像在本地浏览一样有参数输入框
  2. webstorm / intellij IDEA / phpstorm license server 激活链接 (过期留言更新)
  3. TP5 实现链接分享/帮助,限制每个用户每天一次帮忙
  4. 远程仓库都不知道,那你学Git干嘛?
  5. Redis从入门到精通|干货篇
  6. 计算机台式右上角三个灯作用,键盘右上角的三个灯是什么?有什么用
  7. USB 协议分析之 HID 设备(转)
  8. 软件项目开发与管理(单代号网络图参考例题)
  9. 单词风暴2009免费分享版
  10. word向下箭头符替换和打印,去掉多余换行
  11. 海康威视摄像头的多通道rtsp地址格式
  12. 重试利器Guava Retrying
  13. DirectAdmin教程-初级
  14. 寒假每日一题——贝茜放慢脚步
  15. 一个小的java作业,第一次上传CSDN,原创的
  16. 解决win10家庭高级版切换到Administrator用户后无法切换回原账户问题过程记录
  17. 《卓有成效的管理者》——学习心得(五)
  18. C++基础入门(从了解C++到Hello World)
  19. 建模simulink - xpc自定义模块设置
  20. 【小程序】微信小程序如何获取用户微信openID?(已解决,完整代码实例)

热门文章

  1. usb口拒绝访问_u盘无法打开磁盘无法访问拒绝访问该怎么解决?
  2. 三星s9 android,总算是对市场妥协了!三星S9+售价直掉三千,现售价够值了
  3. 华为手机像素密度排行_虽然华为Mate20 X的像素密度更低,但它清晰度不如Mate20吗?...
  4. oracle数据库空间预警,数据库系统预警机制
  5. 【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.13 抗锯齿
  6. 卖保险的都搞起返佣推广了!
  7. PageHelper关联查询 统计总数问题
  8. 神州数码牵手国内最大远程接入平台提供商
  9. deepin 输入法频繁重启,无法正常输入汉字解决方法
  10. 阿里云云数据库RDS的基本使用(二十三)