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实现中文输出的两种方法
May 09 Python
整理Python 常用string函数(收藏)
May 30 Python
python检查URL是否正常访问的小技巧
Feb 25 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
python安装本地whl的实例步骤
Oct 12 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
在keras里面实现计算f1-score的代码
Jun 15 Python
python 获取剪切板内容的两种方法
Nov 28 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
用jscript启动sqlserver
2007/06/21 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
妙用Jquery的val()方法
2012/06/27 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
2016/03/11 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
javascript 组合按键事件监听实现代码
2017/02/21 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
jQuery实现图片下载代码
2019/07/18 jQuery
Python中的闭包详细介绍和实例
2014/11/21 Python
Python编程入门的一些基本知识
2015/05/13 Python
Python 26进制计算实现方法
2015/05/28 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
详解如何获取localStorage最大存储大小的方法
2020/05/21 HTML / CSS
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
大学毕业寄语大全
2014/04/10 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
党建工作汇报材料
2014/12/24 职场文书
学生保证书
2015/01/16 职场文书
化验员岗位职责
2015/02/14 职场文书
员工升职自荐信
2015/03/27 职场文书
员工离职通知函
2015/04/25 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2016猴年开门红标语口号
2015/12/26 职场文书
python可视化大屏库big_screen示例详解
2021/11/23 Python