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实现忽略大小写对字符串列表排序的方法
Sep 25 Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
May 20 Python
Python实现的快速排序算法详解
Aug 01 Python
python验证码识别的示例代码
Sep 21 Python
Python自定义函数定义,参数,调用代码解析
Dec 27 Python
彻底搞懂Python字符编码
Jan 23 Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
详解python statistics模块及函数用法
Oct 27 Python
python抓取多种类型的页面方法实例
Nov 20 Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 Python
Django与数据库交互的实现
Jun 03 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递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jQuery 删除/替换DOM元素的几种方式
2014/05/20 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
JavaScript实现图片切换效果
2017/08/12 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
python中os模块详解
2016/10/14 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/27 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
pycharm专业版远程登录服务器的详细教程
2020/09/15 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
财务分析个人的自荐书范文
2013/11/24 职场文书
课程改革实施方案
2014/03/16 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
导游词格式
2015/02/13 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
国庆阅兵观后感
2015/06/15 职场文书
傲慢与偏见读书笔记
2015/06/29 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书
用Python生成会跳舞的美女
2022/01/18 Python