首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用Python进行读写Excel文件

利用Python进行读写Excel文件

作者头像
用户7886150
修改2020-12-22 10:53:49
修改2020-12-22 10:53:49
7640
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: 使用Python读取Excel文件

Python作为一种脚本语言相较于shell具有更强大的文件处理能力,一般shell在处理纯文本文件时较为实用,而对特殊文件的处理如excel表格则Python会更得心应手,主要体现在它可以调用很多第三方功能包来实现我们想要的功能,Python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别: 

用xlrd和xlwt进行excel读写;用openpyxl进行excel读写;用pandas进行excel读写;

为了方便演示,我这里新建了一个data.xlsx文件,第一个工作表sheet1区域“A1:C19”的内容如下,用于测试读excel的代码: 

Update DateAP VersionMD Version2018/6/25alps-mp-o1.mp1-V1.132.2MOLY.LR12A.R2.MP.V34.15---MOLY.LR12A.R3.MP.V14.42018/6/11alps-mp-o1.mp1-V1.122MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.22018/5/29alps-mp-o1.mp1-V1.112MOLY.LR12A.R2.MP.V30.8---MOLY.LR12A.R3.MP.V10.32018/5/15alps-mp-o1.mp1-V1.102MOLY.LR12A.R2.MP.V28.1---MOLY.LR12A.R3.MP.V82018/5/2alps-mp-o1.mp1-V1.92MOLY.LR12A.R2.MP.V26.1--MOLY.LR12A.R3.MP.V62018/4/17alps-mp-o1.mp1-V1.82MOLY.LR12A.R2.MP.V24.12018/4/13alps-mp-o1.mp1-V1.74MOLY.LR12A.R2.MP.V22.12018/3/29alps-mp-o1.mp1-V1.69MOLY.LR12A.R2.MP.V212018/3/20alps-mp-o1.mp1-V1.64MOLY.LR12A.R2.MP.V20.12018/3/15alps-mp-o1.mp1-V1.59MOLY.LR12A.R2.MP.V192018/3/7alps-mp-o1.mp1-V1.54MOLY.LR12A.R2.MP.V182018/2/27alps-mp-o1.mp1-V1.42MOLY.LR12A.R2.MP.V152018/2/8alps-mp-o1.mp1-V1.37MOLY.LR12A.R2.MP.V142018/2/1alps-mp-o1.mp1-V1.30MOLY.LR12A.R2.MP.V132018/1/25alps-mp-o1.mp1-V1.24.1MOLY.LR12A.R2.MP.V12.62018/1/12alps-mp-o1.mp1-V1.12MOLY.LR12A.R2.MP.V10.62018/1/9alps-mp-o1.mp1-V1.4MOLY.LR12A.R2.MP.V92017/12/26alps-mp-o1.mp1-V1MOLY.LR12A.R2.MP.V8.6

首先是安装第三方模块xlrd和xlwt,直接输入命令"sudo pip install xlrd"和"sudo pip install xlwt"就行,如下:1 利用xlrd和xlwt进行excel读写(xlwt不支持xlsx) 

1.1 xlrd读excel 

 # encoding: utf-8 

 import xlrd book = xlrd.open_workbook('data.xlsx') sheet1 = book.sheets()[0] nrows = sheet1.nrows print u'表格总行数 ',nrows ncols = sheet1.ncols print u'表格总列数 ',ncols row3_values = sheet1.row_values(2) print u'第3行值 ',row3_values col3_values = sheet1.col_values(2) print u'第3列值 ',col3_values cell_3_3 = sheet1.cell(2,2).value print u'第3行第3列的单元格的值:',cell_3_3 

运行结果 

 表格总行数  19 表格总列数  3 第3行值  [u'2018/6/11', u'alps-mp-o1.mp1-V1.122', u'MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.2'] 第3列值  [u'MD\u7248\u672c', u'MOLY.LR12A.R2.MP.V34.15---MOLY.LR12A.R3.MP.V14.4', u'MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.2', u'MOLY.LR12A.R2.MP.V30.8---MOLY.LR12A.R3.MP.V10.3', u'MOLY.LR12A.R2.MP.V28.1---MOLY.LR12A.R3.MP.V8', u'MOLY.LR12A.R2.MP.V26.1--MOLY.LR12A.R3.MP.V6', u'MOLY.LR12A.R2.MP.V24.1', u'MOLY.LR12A.R2.MP.V22.1', u'MOLY.LR12A.R2.MP.V21', u'MOLY.LR12A.R2.MP.V20.1', u'MOLY.LR12A.R2.MP.V19', u'MOLY.LR12A.R2.MP.V18', u'MOLY.LR12A.R2.MP.V15', u'MOLY.LR12A.R2.MP.V14', u'MOLY.LR12A.R2.MP.V13', u'MOLY.LR12A.R2.MP.V12.6', u'MOLY.LR12A.R2.MP.V10.6', u'MOLY.LR12A.R2.MP.V9', u'MOLY.LR12A.R2.MP.V8.6'] 第3行第3列的单元格的值: MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.2 

1.2 xlwt写excel 

主要代码如下,很简单: 

 import xlwt  # 不支持excel2007的xlsx格式 

 workbook = xlwt.Workbook() 

 worksheet = workbook.add_sheet('test') 

 worksheet.write(0,0,'A1data') 

 workbook.save('excelwrite.xls') 

程序运行后,新建excelwrite.xls工作簿并插入text工作表,A1的内容为A1data。 

2 利用openpyxl读写excel,注意这里只能是xlsx类型的excel 

安装的话,直接输入命令"sudo pip install openpyxl"就行,很快就能安装完毕。 

2.1 读excel 

 # encoding: utf-8 from openpyxl.reader.excel import load_workbook 

 workbook = load_workbook('data.xlsx') worksheet = workbook.worksheets[0] row3=[item.value for item in list(worksheet.rows)[2]] print u'第3行值',row3 col3=[item.value for item in list(worksheet.columns)[2]] print u'第3行值',col3 cell_2_3=worksheet.cell(row=2,column=3).value print u'第2行第3列值',cell_2_3 max_row=worksheet.max_row print u'最大行',max_row 

运行结果: 

 第3行值 [u'2018/6/11', u'alps-mp-o1.mp1-V1.122', u'MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.2'] 第3行值 [u'MD Version', u'MOLY.LR12A.R2.MP.V34.15---MOLY.LR12A.R3.MP.V14.4', u'MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.2', u'MOLY.LR12A.R2.MP.V30.8---MOLY.LR12A.R3.MP.V10.3', u'MOLY.LR12A.R2.MP.V28.1---MOLY.LR12A.R3.MP.V8', u'MOLY.LR12A.R2.MP.V26.1--MOLY.LR12A.R3.MP.V6', u'MOLY.LR12A.R2.MP.V24.1', u'MOLY.LR12A.R2.MP.V22.1', u'MOLY.LR12A.R2.MP.V21', u'MOLY.LR12A.R2.MP.V20.1', u'MOLY.LR12A.R2.MP.V19', u'MOLY.LR12A.R2.MP.V18', u'MOLY.LR12A.R2.MP.V15', u'MOLY.LR12A.R2.MP.V14', u'MOLY.LR12A.R2.MP.V13', u'MOLY.LR12A.R2.MP.V12.6', u'MOLY.LR12A.R2.MP.V10.6', u'MOLY.LR12A.R2.MP.V9', u'MOLY.LR12A.R2.MP.V8.6'] 第2行第3列值 MOLY.LR12A.R2.MP.V34.15---MOLY.LR12A.R3.MP.V14.4 最大行 19 

2.2 写excel 

主要代码如下: 

 import openpyxl 

 workbook = openpyxl.Workbook() 

 sheet=workbook.active 

 sheet['A1']='hi,wyu' 

 workbook.save('new.xlsx') 

程序运行后,新建new.xls工作簿并插入sheet工作表,A1的内容为hi,wyu。 

3 利用pandas读取excel 

Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。 

首先要安装pandas模块,用sudo pip install pandas安装。 

pandas是一个数据处理的包,本身提供了许多读取文件的函数,像read_csv(读取csv文件),read_excel(读取excel文件)等,只需一行代码就能实现文件的读取 

3.1 读excel 

主要代码如下,就1行代码搞定,注意这里的data是DataFrame类型: 

 import pandas as pd 

 df = pd.read_excel(r'data.xlsx',sheetname=0) 

 print(df) 

运行结果: 

 Update Date               AP Version                                        MD Version 0    2018/6/25  alps-mp-o1.mp1-V1.132.2  MOLY.LR12A.R2.MP.V34.15---MOLY.LR12A.R3.MP.V14.4 1    2018/6/11    alps-mp-o1.mp1-V1.122   MOLY.LR12A.R2.MP.V32.5---MOLY.LR12A.R3.MP.V12.2 2    2018/5/29    alps-mp-o1.mp1-V1.112   MOLY.LR12A.R2.MP.V30.8---MOLY.LR12A.R3.MP.V10.3 3    2018/5/15    alps-mp-o1.mp1-V1.102      MOLY.LR12A.R2.MP.V28.1---MOLY.LR12A.R3.MP.V8 4     2018/5/2     alps-mp-o1.mp1-V1.92       MOLY.LR12A.R2.MP.V26.1--MOLY.LR12A.R3.MP.V6 5    2018/4/17     alps-mp-o1.mp1-V1.82                            MOLY.LR12A.R2.MP.V24.1 6    2018/4/13     alps-mp-o1.mp1-V1.74                            MOLY.LR12A.R2.MP.V22.1 7    2018/3/29     alps-mp-o1.mp1-V1.69                              MOLY.LR12A.R2.MP.V21 8    2018/3/20     alps-mp-o1.mp1-V1.64                            MOLY.LR12A.R2.MP.V20.1 9    2018/3/15     alps-mp-o1.mp1-V1.59                              MOLY.LR12A.R2.MP.V19 10    2018/3/7     alps-mp-o1.mp1-V1.54                              MOLY.LR12A.R2.MP.V18 11   2018/2/27     alps-mp-o1.mp1-V1.42                              MOLY.LR12A.R2.MP.V15 12    2018/2/8     alps-mp-o1.mp1-V1.37                              MOLY.LR12A.R2.MP.V14 13    2018/2/1     alps-mp-o1.mp1-V1.30                              MOLY.LR12A.R2.MP.V13 14   2018/1/25   alps-mp-o1.mp1-V1.24.1                            MOLY.LR12A.R2.MP.V12.6 15   2018/1/12     alps-mp-o1.mp1-V1.12                            MOLY.LR12A.R2.MP.V10.6 16    2018/1/9      alps-mp-o1.mp1-V1.4                               MOLY.LR12A.R2.MP.V9 17  2017/12/26        alps-mp-o1.mp1-V1                             MOLY.LR12A.R2.MP.V8.6 

3.2 写excel 

主要代码如下: 

 # encoding: utf-8 from pandas import DataFrame 

 data={ 'name':[u'张三',u'李四',u'王五'], 'age':[21,22,23], 'sex':[u'男',u'女',u'男'] } df=DataFrame(data) df.to_excel('new.xlsx') 

程序运行后,将新建(或替换)new.xlsx文件,并在工作表sheet1的A1:D4区域中保存内容如下: 

    age    name    sex 0    21    张三    男 1    22    李四    女 2    23    王五    男 

至此,我们就完成了excel的读写。总的来说,这3种方法都很简单,尤其是第3种方法,1行代码就搞定,在数据处理中,经常会用到pandas这个包(该包可以处理众多常见的数据存储格式,如CSV、JSON等),功能很强大,当然还有许多其他的包也可以完成excel的读写。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档