Python玩转Excel的读写改实例


Posted in Python onFebruary 22, 2019

摘要:

  • 利用xlrd读取excel
  • 利用xlwt写excel
  • 利用xlutils修改excel

利用xlrd读取excel

先需要在命令行中pip install xlrd;读取xls文件的流程为:

加载文件->选中第几个表格->按先行后列的顺序读

通用demo

import xlrd
filename = "test.xls"        #文件路径
wb = xlrd.open_workbook(filename)  #加载这个xls文件
sh = wb.sheet_by_index(0)      #选中第1个表格
rows = sh.nrows           #rows为该表格的行数
for i in range(1,rows):       #从第二行开始按行读取
  title = sh.cell(i,0).value   #取第i+1行,第1列的数据

diy功能

根据列名获取内容的函数
def get_col_index(name,workbook,sheet):
  for i in range(sheet.ncols):
    name2 = sheet.cell(0,i).value
    print(name2)
    if name2 == name:
      return i
  return -1
sheet.cell(1,get_col_index("创建时间")).value

再拓展一点:

sh = wb.sheet_by_name(sheetname)  #通过表格名称选中表格
print(wb.sheet_names())       #打印该xls文件的所有表格名称
sh.row(i)              #获得第i+1行的所有数据组成的list
ncols = sh.ncols          #获得该表格的所有列数
sh.row_values(rowx, start_colx=0, end_colx=None)   #获取第rowx+1行的某几列的数据并组成的list
sh.col(colx, start_rowx=0, end_rowx=None) #获取第colx+1列的某几行的数据并组成的list
sh.cell(i,j).value         #获取第i+1行第j+1列的数据
sh.cell(i,j).ctype         #获取第i+1行第j+1列的数据类型

注意date类型

说起数据类型,补充一点,xlrd读取xls文件单元格的数据类型有五种,数字与类型的对应关系为:

ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error

当单元格某个值为date类型时,不加处理输出的是一个浮点数,此时需要判断ctype并进行一次转换:

from xlrd import xldate_as_tuple
cell = sh.cell(i,10).ctype
if cell.ctype == 3:
  date = datetime(*xldate_as_tuple(cell.value, 0))

利用xlwt写exce

先需要在命令行中pip install xlwt;写xls文件的流程为:

加载文件->选中第几个表格->按先行后列的顺序读

通用demo

import xlwt
file = xlwt.Workbook()   #新建个文件
sheet = file.add_sheet('test_sheet0',cell_overwrite_ok=True) #新建个表格,指定表名以及是否可覆盖写
sheet.write(i,j,value)   #在第i+1行和第j+1列写value(i、j从0开始)
file.save("test_xls.xls")  #保存成xls文件并指定文件名

更多功能

#设置某列的宽度
sheet.col(0).width = 200
#写日期
style = xlwt.XFStyle()
style.num_format_str = 'D-MMM-YY' 
worksheet.write(0, 0, datetime.datetime.now(), style)
#写公式
sheet.write(1, 1, xlwt.Formula('SUM(A1,B1)'))
#合并单元格的写
sheet.write_merge(0, 0, 0, 3, 'First Merge')
#ps:
#write_merge(x, x + h, y, w + y, value, sytle) x和y表示当前行列,h和w为要合并的行数和列数

更炫酷一点

既然是写,何不来点style:

style = xlwt.XFStyle()
#修改字体:
font = xlwt.Font()       #为样式创建字体
font.name = 'Times New Roman'  #字体名称
font.bold = True        #黑体
font.colour_index = 2      #修改字的颜色
font.underline = True      #下划线
style.font = font        #使用到样式中
sheet.write(0,1,"编号",style)
#修改单元格背景色
pattern = xlwt.Pattern() 
pattern.pattern = xlwt.Pattern.SOLID_PATTERN 
pattern.pattern_fore_colour = 5 #色号,可以在源代码中看到色号和颜色的对应关系
style = xlwt.XFStyle()
style.pattern = pattern
sheet.write(0,2,"编号",style)

利用xlutils修改excel

修改excel文件的流程为:

将xlrd加载的xls文件(xlrd对象)复制为xlwt对象,然后用xlwt对象操作excel

demo

import xlrd 
import pymysql
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
file_name = "test_update.xls"
workbook = xlrd.open_workbook(file_name) 
sheet = wb.sheet_by_index(0)
workbook_update = copy(workbook) 
sheet_update = workbook_update.get_sheet(0)
sheet_update.write(i,j,value)
workbook_update.save(file_name)

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python 提取文件的小程序
Jul 29 Python
如何运行Python程序的方法
Apr 21 Python
深入理解Python中命名空间的查找规则LEGB
Aug 06 Python
python 写的一个爬虫程序源码
Feb 28 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
解决Python下json.loads()中文字符出错的问题
Dec 19 Python
Django中的静态文件管理过程解析
Aug 01 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
python pyg2plot的原理知识点总结
Feb 28 Python
详解在OpenCV中如何使用图像像素
Mar 03 Python
Python操作配置文件ini的三种方法讲解
Feb 22 #Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 #Python
python调用虹软2.0第三版的具体使用
Feb 22 #Python
Python实现图片转字符画的代码实例
Feb 22 #Python
Python中正则表达式的用法总结
Feb 22 #Python
python ddt数据驱动最简实例代码
Feb 22 #Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 #Python
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
PHP 学习路线与时间表
2010/02/21 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
php实现求相对时间函数
2015/06/15 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
python 循环遍历字典元素的简单方法
2016/09/11 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
解决Python中回文数和质数的问题
2019/11/24 Python
简单了解python列表和元组的区别
2020/05/14 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
董事长秘书岗位职责
2013/11/29 职场文书
大学生涯自我鉴定
2014/01/16 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
李白故里导游词
2015/02/12 职场文书
护士个人年终总结
2015/02/13 职场文书
毕业设计答辩开场白
2015/05/29 职场文书