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 21 Python
Python中常用信号signal类型实例
Jan 25 Python
解决python3 网络请求路径包含中文的问题
May 10 Python
Tensorflow卷积神经网络实例
May 24 Python
Django中数据库的数据关系:一对一,一对多,多对多
Oct 21 Python
使用Python制作一个打字训练小工具
Oct 01 Python
Python手绘可视化工具cutecharts使用实例
Dec 05 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
使用Python操作ArangoDB的方法步骤
Feb 02 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
python 模块重载的五种方法
Apr 24 Python
Python使用scapy模块发包收包
May 07 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抽象工厂模式(Elgg)
2010/03/21 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
php导出生成word的方法
2015/12/25 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
JavaScript中的anchor()方法使用详解
2015/06/08 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
Python中格式化format()方法详解
2017/04/01 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
iPython pylab模式启动方式
2020/04/24 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
super()与this()的区别
2016/01/17 面试题
汉语言文学职业规划
2014/02/14 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
酒店前台辞职书
2015/02/26 职场文书
社团招新宣传语
2015/07/13 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL