楼主: cyu107
5457 6

[问答] 怎样用Python处理Excel数据 [推广有奖]

  • 4关注
  • 4粉丝

副教授

13%

还不是VIP/贵宾

-

威望
0
论坛币
24652 个
通用积分
11.6801
学术水平
52 点
热心指数
55 点
信用等级
46 点
经验
11550 点
帖子
243
精华
1
在线时间
624 小时
注册时间
2012-11-4
最后登录
2024-7-7

楼主
cyu107 发表于 2014-5-16 15:56:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

怎样用Python处理Excel数据

      前段时间做了个小项目,帮个朋友做了个数据处理的软件。基本的功能很简单,就是对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:

          fromopenpyxl 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 position3. 写入数据

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

      ws.cell('B5')= value1
      ws.cell(row = 3, column = 7) = value24. 保存数据

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

     wb.save('file_name.xlsx')



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Python处理 excel数据 python EXCEL xcel Python处理 Excel数据 Python

已有 2 人评分经验 学术水平 热心指数 信用等级 收起 理由
狂热的爱好者 + 60 精彩帖子
Nicolle + 5 + 5 + 5 精彩帖子

总评分: 经验 + 60  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

沙发
HaiMM01 发表于 2014-6-5 07:26:33
赞,喜欢这种实战经验,比看书好

藤椅
nightmarehelen 发表于 2014-6-5 09:30:18
有过多少往事,好人一生平安!

板凳
damon2000 发表于 2014-6-8 21:55:38
直接用pandas不行吗?

报纸
小⑥ 发表于 2014-6-11 12:09:40
damon2000 发表于 2014-6-8 21:55
直接用pandas不行吗?
同问+1

地板
狂热的爱好者 学生认证  发表于 2014-7-6 10:35:44

7
香蕉菠萝大鸭梨 发表于 2017-10-5 14:30:43
直接用pandas包导入Excel就好了或者用Python自带的导入Excel的文件也可以

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 14:23