python使用xlrd与xlwt对excel的读写和格式设定


Posted in Python onJanuary 21, 2017

前言

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。本文主要介绍了python使用xlrd与xlwt对excel的读写和格式设定,下面话不多说,来看看详细的实现过程。

脚本里先注明# -*- coding:utf-8 -*-   

1.  确认源excel存在并用xlrd读取第一个表单中每行的第一列的数值。

import xlrd, xlwt 
import os 
 
assert os.path.isfile('source_excel.xls'),"There is no timesheet exist. Exit..." 
 
book = xlrd.open_workbook('source_excel.xls') 
sheet=book.sheet_by_index(0) 
 
for rows in range(sheet.nrows): 
 value = sheet.cell(rows,0).value

2. 用xlwt准备将从源表中读出的数据写入新表,并设定行宽和表格的格式。合并单元格2行8列后写入标题,并设定格式为之前定义的tittle_style。

使用的是write_merge。

wbk = xlwt.Workbook(encoding='utf-8') 
sheet_w = wbk.add_sheet('write_after', cell_overwrite_ok=True) 
sheet_w.col(3).width = 5000 
tittle_style = xlwt.easyxf('font: height 300, name SimSun, colour_index red, bold on; align: wrap on, vert centre, horiz center;') 
sheet_w.write_merge(0,2,0,8,u'这是标题',tittle_style)

3. 当函数中要用到全局变量时,注意加global。否则会出现UnboundLocalError:local variable'xxx' referenced before assignment.

check_num = 0 
 
def check_data(sheet): 
 global check_num 
 check_num=check_num+1

4. 写入日期和带格式的数值。原来从sheet中读取的日期格式为2014/4/10,处理后只保留日期并做成数组用逗号分隔后写入新的excel。

date_arr = [] 
date=sheet.cell(row,2).value.rsplit('/')[-1] 
if date not in date_arr: 
  date_arr.append(date) 
sheet_w.write_merge(row2,row2,6,6,date_num, normal_style) 
sheet_w.write_merge(row2,row2,7,7,','.join(date_arr), normal_style)

5. 当从excel中读取的日期格式为xldate时,就需要使用xlrd的xldate_as_tuple来处理为date格式。先判断表格的ctype确实是xldate才能开始操作,否则会报错。之后date格式可以使用strftime来转化为string。如:date.strftime("%Y-%m-%d-%H")

from datetime import date,datetime 
from xlrd import xldate_as_tuple 
 
if (sheet.cell(rows,3).ctype == 3): 
  num=num+1 
  date_value = xldate_as_tuple(sheet.cell_value(rows,3),book.datemode) 
  date_tmp = date(*date_value[:3]).strftime("%d")

6. 最后保存新写的表

wbk.save('new_excel.xls')

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
使用Flask集成bootstrap的方法
Jul 24 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
python分布式编程实现过程解析
Nov 08 Python
使用python计算三角形的斜边例子
Apr 15 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
python 如何实现遗传算法
Sep 22 Python
Python约瑟夫生者死者小游戏实例讲解
Jan 04 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 #Python
python实现的多线程端口扫描功能示例
Jan 21 #Python
Python 字符串大小写转换的简单实例
Jan 21 #Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 #Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 #Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 #Python
python 查找字符串是否存在实例详解
Jan 20 #Python
You might like
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
超级退弹代码
2008/07/07 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
学习python (1)
2006/10/31 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python实现点对点聊天程序
2018/07/28 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
Python 代码调试技巧示例代码
2020/08/11 Python
商铺门前三包责任书
2014/07/25 职场文书
2015年话务员工作总结
2015/04/29 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android