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笔记(叁)继续学习
Oct 24 Python
python正则表达式的使用
Jun 12 Python
解决python 输出是省略号的问题
Apr 19 Python
python中subprocess批量执行linux命令
Apr 27 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
Pandas的read_csv函数参数分析详解
Jul 02 Python
在Django的View中使用asyncio的方法
Jul 12 Python
Python数据库小程序源代码
Sep 15 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
python与mysql数据库交互的实现
Jan 06 Python
解决tensorflow添加ptb库的问题
Feb 10 Python
Python HTMLTestRunner库安装过程解析
May 25 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
关于PHP语言构造器介绍
2013/07/08 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
Javascript函数的参数
2015/07/16 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
vue debug 二种方法
2018/09/16 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
Python中的startswith和endswith函数使用实例
2014/08/25 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Python对列表的操作知识点详解
2019/08/20 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
2020/02/03 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
Android interview questions
2016/12/25 面试题
党员一句话承诺大全
2014/03/28 职场文书
初中学校军训方案
2014/05/09 职场文书
乡镇个人对照检查材料
2014/08/22 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
2019年最新借条范本!
2019/07/08 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL