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获得图片base64编码示例
Jan 16 Python
python实现指定字符串补全空格的方法
Apr 30 Python
Python从MP3文件获取id3的方法
Jun 15 Python
Django的数据模型访问多对多键值的方法
Jul 21 Python
python读写json文件的简单实现
Apr 11 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python绑定方法与非绑定方法详解
Aug 18 Python
python机器学习实战之K均值聚类
Dec 20 Python
python利用高阶函数实现剪枝函数
Mar 20 Python
Python实现的微信好友数据分析功能示例
Jun 21 Python
Python @property及getter setter原理详解
Mar 31 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 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字符串的连接的简单实例
2013/12/30 PHP
php伪静态之APACHE篇
2014/06/02 PHP
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
python实现发送和获取手机短信验证码
2016/01/15 Python
python删除过期log文件操作实例解析
2018/01/31 Python
python编程嵌套函数实例代码
2018/02/11 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
numpy.array 操作使用简单总结
2019/11/08 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
python itsdangerous模块的具体使用方法
2020/02/17 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
python将字典内容写入json文件的实例代码
2020/08/12 Python
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
存储过程的优点有哪些
2012/09/27 面试题
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
庆七一活动方案
2014/01/25 职场文书
公司门卫岗位职责
2014/03/15 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
群众路线学习心得体会范文
2014/11/05 职场文书
2015年团支部工作总结
2015/04/03 职场文书
2015年质检工作总结
2015/05/04 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书