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中的生成器和yield详细介绍
Jan 09 Python
python实现带验证码网站的自动登陆实现代码
Jan 12 Python
在Python的Django框架中包装视图函数
Jul 20 Python
python实现对csv文件的列的内容读取
Jul 04 Python
使用Python横向合并excel文件的实例
Dec 11 Python
python变量的存储原理详解
Jul 10 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
python3连接MySQL8.0的两种方式
Feb 17 Python
jupyter notebook的安装与使用详解
May 18 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
Python devel安装失败问题解决方案
Jun 09 Python
python opencv通过按键采集图片源码
May 20 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)
2010/09/04 PHP
PHP文件打开、关闭、写入的判断与执行代码
2011/05/24 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
seajs学习教程之基础篇
2016/10/20 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
django ManyToManyField多对多关系的实例详解
2019/08/09 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
python实现批量命名照片
2020/06/18 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
饮料业务员岗位职责
2013/12/15 职场文书
公司踏青活动方案
2014/08/16 职场文书
课外活动总结
2015/02/04 职场文书
公务员个人总结
2015/02/12 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
导游词之杭州西湖
2019/09/19 职场文书
JavaScript中reduce()的用法
2022/05/11 Javascript