python】【Python基础】Python可以处理excel表格吗_第2页回答

2020-12-10 10:20发布

27条回答
风中浪子
2楼 · 2020-12-10 19:56

可以的,如果把Python运用到表格里,在遇到工作量大的时候,会很方便,节省时间,不加班不是梦,好像叫做Python办公自动化,学这个就行

茄子酱
3楼 · 2020-12-10 20:54

当然可以了,不仅能减轻工作量,效率更会提升

无需指教
4楼 · 2020-12-11 08:34

由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是Python最容易操作。

安装库

Python环境

首先当然是配环境,不过选Python的一个重要原因就是Mac内是自带Python环境的,不需要额外的配置环境,省下了一笔工作,如果你用的是Windows系统,那就还需要配置一下Python的环境了,我Mac的Python版本是2.7。

第三方库

Python自己是不支持直接操作Excel的,但是Python强大之处就在于有大量好用的第三方库,这里我们选用读Excel的xlrd库和写Excel的xlwt库来操作。

关于第三方库的安装很简单,首先,去专门下载Python库的网站下载两个库的源码: 
* 下载xlrd 
* 下载xlwt

注意对于新手来说最简单的安装方式就是源码安装,不需要去折腾第三方库的管理器,直接点击这个先下载两个库的源码:

你看他后面也描述了类型是源码嘛。

下载好之后在mac中解压,得到文件夹,可以看到里面都是有一个 setup.py 文件的:

这里当然不是直接双击安装了,py类型表示它是一个Python代码文件,双击只会打开文件看代码。我们要使用终端,输入命令号进入当前所在的文件夹,比如我把文件放在了“下载”中,那么做法是:

$ cd Downloads/$ cd xlwt-1.1.2$ sudo python setup.py install
  • 1

  • 2

  • 3

这里 cd 的意思是进入该文件夹,sudo 的意思是使用管理员权限安装,不使用的话会告诉你没有权限的,回车后会要你输入电脑密码,输入后回车即可,python 是执行 python代码文件的命令,install 就是安装了。

然后会看到刷刷刷一堆文字过去,最后告诉你 finished 了,就是安装完成了。

xlrd 也是同样的安装方式。

写代码

读写Excel的第三方库都安装好了,就可以开始写代码了。

我们在一个文件夹下创建一个 hello.py 文件,然后用sublime之类的文档编辑器打开它,开始编写代码。(PS:Python中 # 号开头表示注释)

读Excel

# -*- coding: utf-8 -*- import  xdrlib ,sysimport xlrd#打开excel文件def open_excel(file= 'test.xlsx'):try:data = xlrd.open_workbook(file)return dataexcept Exception,e:print str(e)#根据名称获取Excel表格中的数据   参数:file:Excel文件路径     colnameindex:表头列名所在行的索引  ,by_name:Sheet1名称def excel_table_byname(file= 'test.xlsx', colnameindex=0, by_name=u'Sheet1'):data = open_excel(file) #打开excel文件table = data.sheet_by_name(by_name) #根据sheet名字来获取excel中的sheetnrows = table.nrows #行数 colnames = table.row_values(colnameindex) #某一行数据 list =[] #装读取结果的序列for rownum in range(0, nrows): #遍历每一行的内容row = table.row_values(rownum) #根据行号获取行if row: #如果行存在app = [] #一行的内容for i in range(len(colnames)): #一列列地读取行的内容app.append(row[i])list.append(app) #装载数据return list#主函数def main():tables = excel_table_byname()for row in tables:print rowif __name__=="__main__":main()
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

这个代码很多我都注释了,只讲几个要注意的地方,首先最开始我们设置了utp8编码,然后一定要记得导入xlrd包,这样才能使用它的函数去读取excel。里面的 main() 是主函数,python 会运行这个函数,这个函数调用了其余的函数来读取数据。这个代码实现的是将excel文件 test.xlsx 中的 Sheet1 表中的数据一行行读取出来并打印。

Excel中内容如下: 

有两行内容。

要运行这个代码,需要用终端使用命令行,首先 cd 进入到代码所在的文件夹,代码和Excel文件都要放在这个文件夹里。然后使用 python hello.py 命令来运行这个代码文件:

以上就是 Python 读取并打印出来的内容,u 表示使用的是unicode编码,可以看到与Excel中是一致的。

创建Excel

使用xlwt库我们可以创建一个Excel:

# -*- coding: utf-8 -*- import xlwtdef testXlwt(file = 'new.xls'):book = xlwt.Workbook() #创建一个Excelsheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheetsheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据book.save(file) #创建保存文件#主函数def main():testXlwt()if __name__=="__main__":main()
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

这个代码更简单,同样记得要在开头导入库。

代码中我们创建了一个excel,在其中添加一个sheet,写入两个数据,最后按照我们的命名保存了文件。

按照上面同样的方法运行代码后,终端中不会有打印的内容,但是我们去文件夹中看会得到一个名为 new.xls 的新excel文件,打开可以看到:

按照我们的方法写了数据,同时sheet名字也是hello。

值得注意的是,在xlwt库的说明中有这么一句话:

Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.6, 3.3+

也就是说,它只能创建 xls 的文件格式,不能创建现在的 xlsx 格式,其实有点老了,如果你把文件名写了 xlsx 格式,将会无法打开。

处理Excel内容

其实单独的读和写只是基本功,我们最终是想要处理Excel中的内容的。

这里我们假设一个使用场景,我们希望将Excel中所有第一列和第二列相同的行数据筛选出来保存到一个新的Excel中去。

那么我们的流程是:

  1. 打开目标Excel

  2. 读取内容

  3. 读取每一行的同时筛选第一列和第二列相等的行保留下来

  4. 创建一个新Excel

  5. 将筛选出来的内容写进去

  6. 保存新Excel

那么我们看代码:

# -*- coding: utf-8 -*- import  xdrlib ,sysimport xlrdimport xlwt#打开excel文件def open_excel(file= 'test.xlsx'):try:data = xlrd.open_workbook(file)return dataexcept Exception,e:print str(e)#根据索引获取Excel表格中的数据   参数:file:Excel文件路径     colnameindex:表头列名所在行的索引  ,by_index:表的索引def excel_table_byindex(file= 'test.xlsx',colnameindex=0,by_index=0):data = open_excel(file) #打开excel文件table = data.sheets()[by_index] #根据sheet序号来获取excel中的sheetnrows = table.nrows #行数ncols = table.ncols #列数colnames =  table.row_values(colnameindex) #某一行数据 list =[] #装读取结果的序列for rownum in range(0,nrows): #遍历每一行的内容row = table.row_values(rownum) #根据行号获取行if row: #如果行存在app = [] #一行的内容for i in range(len(colnames)): #一列列地读取行的内容app.append(row[i])if app[0] == app[1] : #如果这一行的第一个和第二个数据相同才将其装载到最终的list中list.append(app)testXlwt('new.xls', list) #调用写函数,讲list内容写到一个新文件中return list#将list中的内容写入一个新的file文件def testXlwt(file = 'new.xls', list = []):book = xlwt.Workbook() #创建一个Excelsheet1 = book.add_sheet('hello') #在其中创建一个名为hello的sheeti = 0 #行序号for app in list : #遍历list每一行j = 0 #列序号for x in app : #遍历该行中的每个内容(也就是每一列的)sheet1.write(i, j, x) #在新sheet中的第i行第j列写入读取到的x值j = j+1 #列号递增i = i+1 #行号递增# sheet1.write(0,0,'cloudox') #往sheet里第一行第一列写一个数据# sheet1.write(1,0,'ox') #往sheet里第二行第一列写一个数据book.save(file) #创建保存文件#主函数def main():tables = excel_table_byindex()for row in tables:print rowif __name__=="__main__":main()
  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

这次我们开头要导入xlrd和xlwt两个库,因为既要读也要写。

代码内容基本与上面两个差不多,有一点点加深,在读取的时候我们判断了第一列和第二列数据相同的行才加到list中去。在写的时候我们用了两个for循环来对新excel中的一个个单元格写数据,使用了i和j两个变量来记录位置。此外在获取sheet的时候,与上面的不同,这里是通过sheet的序号(这里是0)来获取的,上面的是通过sheet名称来获取。

我们要处理的Excel中的内容是这样的:

按道理我们筛选后只应该保留第一行的内容,运行完后我们得到了一个新的Excel文件,里面的内容如下:

可以看到和预期是相符的。

这里只是简单的例子,两个库的操作还有很多,能够进行的处理也有很多,如果要处理大量数据,可能还要考虑内存,分批次来处理,总之,本文只是一个入门,尽量追求零基础也能学着使用来解放劳动力,更多的用法,就看自己琢磨了。


梵梵
5楼 · 2020-12-11 09:13

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。

大冬瓜
6楼 · 2020-12-11 09:48

可以的,python处理Excel常用到的模块是xlrd。使用xlrd可以非常方便的处理Excel文档

三岁奶猫
7楼 · 2020-12-11 10:16

当然可以了,python可以高效的处理表格,能大大减轻工作量

kitidog2016
8楼 · 2020-12-11 10:45

python处理Excel常用到的模块是xlrd。使用xlrd可以非常方便的处理Excel文档,下面介绍一下基本用法

打开文件

1

2

import xlrd

data= xlrd.open_workbook("c:\\skills.xls")

获取一个工作表

1

2

table = data.sheet_by_name(u'skills') #也可以

table = data.sheet_by_index(0)

行,列的获取

1

2

table.row_values(i)

table.col_values(i)

行数,列数等

1

2

nrows = table.nrows

ncols = table.ncols

单元格数据

1

2

cell_A1 = table.cell(0, 0).value

cell_C4 = table.cell(2, 3).value

简单写单元格

1

2

3

4

5

table.put_cell(row, col, ctype, value, xf)

row = col = 0

ctype = 1 # 0 empty , 1 string, 2 number, 3 date, 4 bool, 5 error

value = 'this is cell value'

xf = 0


yjh
9楼 · 2020-12-11 11:22

当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量


相关问题推荐

  • 回答 1

    可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。

  • 回答 6

    人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...

  • 回答 7

    代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http':  'http://61.155.164.110:3128'}http://www.goub......

  • 回答 2

    要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False  #进入循环标志while not Is_exit:User_name = input(please ...

  • 回答 2

    MacOS设置环境变量path的完全总结  一、MacOS加载bash shell 环境变量的加载顺序   mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile                                              ...

  • 回答 4

    当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...

  • 回答 5

    在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...

  • 回答 2
    已采纳

    import sqlite3p = sqlite3.connect(file:memDB1?mode=memory&cache=shared, uri=True)p.execute('CREATE TABLE tbTest (fld1, fld2)')p.execute(INSERT INTO tbTest VALUES ('fld1', 'fld2'...

  • 回答 13

    Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...

  • 回答 22

    1、兼职处理数据2、兼职查询资料3、兼职P图

  • 回答 26

       Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...

  • 回答 17

    可以的,python语法简单。刚开始学习可以试一下

  • 回答 25

    这两个其实现在用的都很普遍,java可能更好用一些吧

  • 回答 19

    1.if 语句1)基本用法:if 要判断的条件:    条件成立的时候,要做的事情else:    条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件:    条件成立的时候,要做的事情elif 条件2...

  • 回答 26

    首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括:  (1)Web和Internet开发  (2)科学计算和统计  (3)人工智能  (4)桌面界面开发  (5)软件开发  (6)后端开发  (7)网络爬虫...

没有解决我的问题,去提问