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代码
Mar 13 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
python删除过期log文件操作实例解析
Jan 31 Python
tensorflow使用神经网络实现mnist分类
Sep 08 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
python3正则模块re的使用方法详解
Feb 11 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python实现xml转json文件的示例代码
Dec 30 Python
selenium+超级鹰实现模拟登录12306
Jan 24 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
php生成图片缩略图的方法
2015/04/07 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
jquery实现超简洁的TAB选项卡效果代码
2015/08/28 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
Python中数字以及算数运算符的相关使用
2015/10/12 Python
python字典操作实例详解
2017/11/16 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Django扫码抽奖平台的配置过程详解
2021/01/14 Python
python 高阶函数简单介绍
2021/02/19 Python
AmazeUI 按钮交互的实现示例
2020/08/24 HTML / CSS
在线课程:Skillshare
2019/04/02 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
高职助产应届生自荐信
2013/09/24 职场文书
大专生工程监理求职信
2013/10/04 职场文书
骨干教师培训感言
2014/01/16 职场文书
竞聘自述材料
2014/08/25 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
受资助学生感谢信
2015/01/21 职场文书
大二学年个人总结
2015/03/03 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android