2020-12-10 10:20发布
可以的,如果把Python运用到表格里,在遇到工作量大的时候,会很方便,节省时间,不加班不是梦,好像叫做Python办公自动化,学这个就行
当然可以了,不仅能减轻工作量,效率更会提升
由于需要解决大批量Excel处理的事情,与其手工操作还不如写个简单的代码来处理,大致选了一下感觉还是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中 # 号开头表示注释)
# -*- 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()
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中是一致的。
使用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()
这个代码更简单,同样记得要在开头导入库。
代码中我们创建了一个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
读取内容
读取每一行的同时筛选第一列和第二列相等的行保留下来
创建一个新Excel
将筛选出来的内容写进去
保存新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()
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文件,里面的内容如下:
可以看到和预期是相符的。
这里只是简单的例子,两个库的操作还有很多,能够进行的处理也有很多,如果要处理大量数据,可能还要考虑内存,分批次来处理,总之,本文只是一个入门,尽量追求零基础也能学着使用来解放劳动力,更多的用法,就看自己琢磨了。
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
可以的,python处理Excel常用到的模块是xlrd。使用xlrd可以非常方便的处理Excel文档
当然可以了,python可以高效的处理表格,能大大减轻工作量
python处理Excel常用到的模块是xlrd。使用xlrd可以非常方便的处理Excel文档,下面介绍一下基本用法
打开文件
import xlrd
data= xlrd.open_workbook("c:\\skills.xls")
获取一个工作表
table = data.sheet_by_name(u'skills') #也可以
table = data.sheet_by_index(0)
行,列的获取
table.row_values(i)
table.col_values(i)
行数,列数等
nrows = table.nrows
ncols = table.ncols
单元格数据
cell_A1 = table.cell(0, 0).value
cell_C4 = table.cell(2, 3).value
简单写单元格
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
当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量
可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。
人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...
代理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......
要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False #进入循环标志while not Is_exit:User_name = input(please ...
MacOS设置环境变量path的完全总结 一、MacOS加载bash shell 环境变量的加载顺序 mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile ...
当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...
在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...
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'...
Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...
1、兼职处理数据2、兼职查询资料3、兼职P图
Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...
可以的,python语法简单。刚开始学习可以试一下
这两个其实现在用的都很普遍,java可能更好用一些吧
1.if 语句1)基本用法:if 要判断的条件: 条件成立的时候,要做的事情else: 条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件: 条件成立的时候,要做的事情elif 条件2...
首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括: (1)Web和Internet开发 (2)科学计算和统计 (3)人工智能 (4)桌面界面开发 (5)软件开发 (6)后端开发 (7)网络爬虫...
最多设置5个标签!
可以的,如果把Python运用到表格里,在遇到工作量大的时候,会很方便,节省时间,不加班不是梦,好像叫做Python办公自动化,学这个就行
当然可以了,不仅能减轻工作量,效率更会提升
引
由于需要解决大批量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代码文件,双击只会打开文件看代码。我们要使用终端,输入命令号进入当前所在的文件夹,比如我把文件放在了“下载”中,那么做法是:
1
2
3
这里 cd 的意思是进入该文件夹,sudo 的意思是使用管理员权限安装,不使用的话会告诉你没有权限的,回车后会要你输入电脑密码,输入后回车即可,python 是执行 python代码文件的命令,install 就是安装了。
然后会看到刷刷刷一堆文字过去,最后告诉你 finished 了,就是安装完成了。
xlrd 也是同样的安装方式。
写代码
读写Excel的第三方库都安装好了,就可以开始写代码了。
我们在一个文件夹下创建一个 hello.py 文件,然后用sublime之类的文档编辑器打开它,开始编写代码。(PS:Python中 # 号开头表示注释)
读Excel
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
这个代码更简单,同样记得要在开头导入库。
代码中我们创建了一个excel,在其中添加一个sheet,写入两个数据,最后按照我们的命名保存了文件。
按照上面同样的方法运行代码后,终端中不会有打印的内容,但是我们去文件夹中看会得到一个名为 new.xls 的新excel文件,打开可以看到:
按照我们的方法写了数据,同时sheet名字也是hello。
值得注意的是,在xlwt库的说明中有这么一句话:
也就是说,它只能创建 xls 的文件格式,不能创建现在的 xlsx 格式,其实有点老了,如果你把文件名写了 xlsx 格式,将会无法打开。
处理Excel内容
其实单独的读和写只是基本功,我们最终是想要处理Excel中的内容的。
这里我们假设一个使用场景,我们希望将Excel中所有第一列和第二列相同的行数据筛选出来保存到一个新的Excel中去。
那么我们的流程是:
打开目标Excel
读取内容
读取每一行的同时筛选第一列和第二列相等的行保留下来
创建一个新Excel
将筛选出来的内容写进去
保存新Excel
那么我们看代码:
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文件,里面的内容如下:
可以看到和预期是相符的。
结
这里只是简单的例子,两个库的操作还有很多,能够进行的处理也有很多,如果要处理大量数据,可能还要考虑内存,分批次来处理,总之,本文只是一个入门,尽量追求零基础也能学着使用来解放劳动力,更多的用法,就看自己琢磨了。
python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。
可以的,python处理Excel常用到的模块是xlrd。使用xlrd可以非常方便的处理Excel文档
当然可以了,python可以高效的处理表格,能大大减轻工作量
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
当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量
相关问题推荐
可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。
人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...
代理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......
要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False #进入循环标志while not Is_exit:User_name = input(please ...
MacOS设置环境变量path的完全总结 一、MacOS加载bash shell 环境变量的加载顺序 mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile ...
当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...
在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...
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'...
Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...
1、兼职处理数据2、兼职查询资料3、兼职P图
Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...
可以的,python语法简单。刚开始学习可以试一下
这两个其实现在用的都很普遍,java可能更好用一些吧
1.if 语句1)基本用法:if 要判断的条件: 条件成立的时候,要做的事情else: 条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件: 条件成立的时候,要做的事情elif 条件2...
首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括: (1)Web和Internet开发 (2)科学计算和统计 (3)人工智能 (4)桌面界面开发 (5)软件开发 (6)后端开发 (7)网络爬虫...