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中dict与set的使用
Aug 10 Python
python&MongoDB爬取图书馆借阅记录
Feb 05 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
python安装pil库方法及代码
Jun 25 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
Python API len函数操作过程解析
Mar 05 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
python GUI模拟实现计算器
Jun 22 Python
python 常见的反爬虫策略
Sep 27 Python
Python内置函数及功能简介汇总
Oct 13 Python
python 实时调取摄像头的示例代码
Nov 25 Python
如何在Python中妥善使用进度条详解
Apr 05 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里的中文变量说明
2011/07/23 PHP
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
JavaScript Sort 表格排序
2009/10/31 Javascript
Javascript 二维数组
2009/11/26 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
浅谈实现vue2.0响应式的基本思路
2018/02/13 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python字典的常用方法总结
2019/07/31 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
Python如何在bool函数中取值
2020/09/21 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
法国珠宝店:CLEOR
2017/01/29 全球购物
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
运动会方阵口号
2014/06/07 职场文书
入党申请书怎么写?
2019/06/11 职场文书