Python3 读、写Excel文件的操作方法


Posted in Python onOctober 20, 2018

首先,简单介绍一下EXECL中工作簿和工作表的区别:

工作簿的英文是BOOK(WORKBOOK),工作表的英文是SHEET(WORKSHEET)。

•一个工作簿就是一个独立的文件
•一个工作簿里面可以有1个或者多个工作表
•工作簿是工作表的集合

1:使用python实现对Excel文件的读写,首先需要安装专用的模块(可以自己编写)xlrd,xlwt模块

2:读取excel数据(注意事项:sheet编号,行号,列号都是从索引0开始)

Python3 读、写Excel文件的操作方法

import xlrd
# 设置路径
path = 'E:/input.xlsx'
# 打开execl
workbook = xlrd.open_workbook(path)
# 输出Excel文件中所有sheet的名字
print(workbook.sheet_names())
# 根据sheet索引或者名称获取sheet内容
Data_sheet = workbook.sheets()[0] # 通过索引获取
# Data_sheet = workbook.sheet_by_index(0) # 通过索引获取
# Data_sheet = workbook.sheet_by_name(u'名称') # 通过名称获取
print(Data_sheet.name) # 获取sheet名称
rowNum = Data_sheet.nrows # sheet行数
colNum = Data_sheet.ncols # sheet列数
# 获取所有单元格的内容
list = []
for i in range(rowNum):
 rowlist = []
 for j in range(colNum):
 rowlist.append(Data_sheet.cell_value(i, j))
 list.append(rowlist)
# 输出所有单元格的内容
for i in range(rowNum):
 for j in range(colNum):
 print(list[i][j], '\t\t', end="")
 print()
# 获取整行和整列的值(列表)
rows = Data_sheet.row_values(0) # 获取第一行内容
cols = Data_sheet.col_values(1) # 获取第二列内容
# print (rows)
# print (cols)
# 获取单元格内容
cell_A1 = Data_sheet.cell(0, 0).value
cell_B1 = Data_sheet.row(0)[1].value # 使用行索引
cell_C1 = Data_sheet.cell(0, 2).value
cell_D2 = Data_sheet.col(3)[1].value # 使用列索引
print(cell_A1, cell_B1, cell_C1, cell_D2)
# 获取单元格内容的数据类型
# ctype:0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
print('cell(0,0)数据类型:', Data_sheet.cell(0, 0).ctype)
print('cell(1,0)数据类型:', Data_sheet.cell(1, 0).ctype)
print('cell(1,1)数据类型:', Data_sheet.cell(1, 1).ctype)
print('cell(1,2)数据类型:', Data_sheet.cell(1, 2).ctype)
# 获取单元格内容为日期的数据
date_value = xlrd.xldate_as_tuple(Data_sheet.cell_value(1,0),workbook.datemode)
print(type(date_value), date_value)
print('%d:%d:%d' % (date_value[0:3]))

3:创建excel并写入数据

Python3 读、写Excel文件的操作方法

import xlwt
def set_style(name, height, bold=False):
 style = xlwt.XFStyle() # 初始化样式
 font = xlwt.Font() # 为样式创建字体
 font.name = name
 font.bold = bold
 font.color_index = 4
 font.height = height
 style.font = font
 return style
def write_excel(path):
 # 创建工作簿
 workbook = xlwt.Workbook(encoding='utf-8')
 # 创建sheet
 data_sheet = workbook.add_sheet('demo')
 row0 = [u'字段名称', u'大致时段', 'CRNTI', 'CELL-ID']
 row1 = [u'测试', '15:50:33-15:52:14', 22706, 4190202]
 # 生成第一行和第二行
 for i in range(len(row0)):
 data_sheet.write(0, i, row0[i], set_style('Times New Roman', 220, True))
 data_sheet.write(1, i, row1[i], set_style('Times New Roman', 220, True))
 # 保存文件
 # workbook.save('demo.xls')
 workbook.save(path)
if __name__ == '__main__':
 # 设置路径
 path = 'E:/demo.xls'
 write_excel(path)
 print(u'创建demo.xls文件成功')

再看一个例子:

转载:Ryan in C++

基本的write函数接口很简单:

•新建一个excel文件:                                                 file = xlwt.Workbook() (注意这里的Workbook首字母是大写)
•新建一个sheet:                                                        table = file.add_sheet('sheet_name')
•写入数据table.write(行,列,value):                            table.write(0,0,'test')
•如果是写入中文,则要用u'汉字'的形式。比如:       table.write(0,0, u'汉字')
•合并单元格:                                                             table.write_merge(x, x + m, y, y + n, string, style)
•x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式

"""
设置单元格样式
"""
import xlwt
def set_style(font_name, font_height, bold=False):
 style = xlwt.XFStyle() # 初始化样式
 font = xlwt.Font() # 为样式创建字体
 font.name = font_name # 'Times New Roman'
 font.bold = bold
 font.color_index = 4
 font.height = font_height
 borders = xlwt.Borders()
 borders.left = 6
 borders.right = 6
 borders.top = 6
 borders.bottom = 6
 style.font = font
 style.borders = borders
 return style
# 写excel
def write_excel(output_path):
 f = xlwt.Workbook() # 创建工作簿
 '''
 创建第一个sheet:
 sheet1
 '''
 sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) # 创建sheet
 row0 = [u'业务',u'状态',u'北京',u'上海',u'广州',u'深圳',u'状态小计',u'合计']
 column0 = [u'机票',u'船票',u'火车票',u'汽车票',u'其它']
 status = [u'预订',u'出票',u'退票',u'业务小计']
 # 生成第一行
 for i in range(0, len(row0)):
 sheet1.write(0, i, row0[i], set_style('Times New Roman', 220, True))
 # 生成第一列和最后一列(合并4行)
 i, j = 1, 0
 while i < 4*len(column0) and j < len(column0):
 sheet1.write_merge(i, i+3, 0, 0, column0[j], set_style('Arial', 220, True)) # 第一列
 sheet1.write_merge(i, i+3, 7, 7) # 最后一列"合计"
 i += 4
 j += 1
 sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True))
 # 生成第二列
 i = 0
 while i < 4*len(column0):
 for j in range(0,len(status)):
  sheet1.write(j+i+1, 1, status[j])
 i += 4
 f.save(output_path)
if __name__ == '__main__':
 write_excel('E:/demo.xls') # 保存文件.这里如果是.xlsx的话会打不开。

注意:如果对一个单元格重复操作,会引发error。所以在打开时加cell_overwrite_ok=True解决

table = file.add_sheet('sheet name',cell_overwrite_ok=True)

生成的demo.xls效果如下:

Python3 读、写Excel文件的操作方法

总结

以上所述是小编给大家介绍的Python3 读、写Excel文件的操作方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python 中的Selenium异常处理实例代码
May 03 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
Python删除n行后的其他行方法
Jan 28 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 Python
python中必要的名词解释
Nov 20 Python
基于Python获取照片的GPS位置信息
Jan 20 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python发送邮件实现基础解析
Aug 14 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 Python
python numpy数组的索引和切片的操作方法
Oct 20 #Python
详解Python字典小结
Oct 20 #Python
在Python dataframe中出生日期转化为年龄的实现方法
Oct 20 #Python
Django中的ajax请求
Oct 19 #Python
Tesserocr库的正确安装方式
Oct 19 #Python
Python中Proxypool库的安装与配置
Oct 19 #Python
在cmder下安装ipython以及环境的搭建
Oct 19 #Python
You might like
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
基于JQuery的密码强度验证代码
2010/03/01 Javascript
jQuery知识点整理
2015/01/30 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
js实现日历与定时器
2017/02/22 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
vuex存储token示例
2019/11/11 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
原生js生成图片验证码
2020/10/11 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
对Python3 序列解包详解
2019/02/16 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
keras得到每层的系数方式
2020/06/15 Python
求高于平均分的学生学号及成绩
2016/09/01 面试题
公司总经理岗位职责
2014/03/15 职场文书
安全生产年活动总结
2014/08/29 职场文书
个人年终总结结尾
2015/03/06 职场文书
考博导师推荐信范文
2015/03/27 职场文书
代理词怎么写
2015/05/25 职场文书
宣传部部长竞选稿
2015/11/21 职场文书