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抓取京东价格分析京东商品价格走势
Jan 09 Python
python脚本实现分析dns日志并对受访域名排行
Sep 18 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
Python排序算法实例代码
Aug 10 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
numpy中的ndarray方法和属性详解
May 27 Python
Python内存管理实例分析
Jul 10 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
python非标准时间的转换
Jul 25 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 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生成月历代码
2007/06/14 PHP
深入PHP数据加密详解
2013/06/18 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
2014/12/17 PHP
PHP常用的小程序代码段
2015/11/14 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
多广告投放代码 推荐
2006/11/13 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
2013/04/08 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
keras:model.compile损失函数的用法
2020/07/01 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
2021/03/03 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
阿迪达斯印度官方商城:adidas India
2017/03/26 全球购物
会计应届生的自荐信
2013/12/13 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
redis实现排行榜功能
2021/05/24 Redis