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 相关文章推荐
python实现获取序列中最小的几个元素
Sep 25 Python
Python获取服务器信息的最简单实现方法
Mar 05 Python
实例说明Python中比较运算符的使用
May 13 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
Python爬虫抓取技术的一些经验
Jul 12 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
Jan 04 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
python如何提升爬虫效率
Sep 27 Python
Django显示可视化图表的实践
May 10 Python
Python类方法总结讲解
Jul 26 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
JS高级笔记
2011/07/13 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
js格式化时间的方法
2015/12/18 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
React Router基础使用
2017/01/17 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
浅谈node的事件机制
2017/10/09 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
NodeJS模块与ES6模块系统语法及注意点详解
2019/01/04 NodeJs
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
Python模块future用法原理详解
2020/01/20 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
中间件分为哪几类
2016/09/18 面试题
公司端午节活动方案
2014/02/04 职场文书
旅游安全协议书
2014/04/21 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
入党个人总结范文
2015/03/02 职场文书