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 25 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
Mar 23 Python
python中验证码连通域分割的方法详解
Jun 04 Python
pygame实现简易飞机大战
Sep 11 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
Python去除字符串前后空格的几种方法
Mar 04 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
python+requests接口自动化框架的实现
Aug 31 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
python turtle绘图命令及案例
Nov 23 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中的Cannot modify header information 问题
2013/08/12 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
js实现跨域访问的三种方法
2015/12/09 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
JS功能代码集锦
2016/05/04 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
详解node child_process模块学习笔记
2018/01/24 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python实现多线程下载文件的代码实例
2014/06/01 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
window下eclipse安装python插件教程
2017/04/24 Python
python3实现基于用户的协同过滤
2018/05/31 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
详解python:time模块用法
2019/03/25 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
django中ImageField的使用详解
2020/12/21 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
澳大利亚厨房和家用电器购物网站:Bing Lee
2021/01/11 全球购物
华为c/c++笔试题
2016/01/25 面试题
模具专业推荐信
2013/10/30 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
安全教育第一课观后感
2015/06/17 职场文书
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏