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正则表达式使用范例分享
Dec 04 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
python实现图片筛选程序
Oct 24 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
详解Python Qt的窗体开发的基本操作
Jul 14 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
django连接oracle时setting 配置方法
Aug 29 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
python线程池如何使用
May 28 Python
Python异常类型以及处理方法汇总
Jun 05 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
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
初识Javascript小结
2015/07/16 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
jQuery无冲突模式详解
2019/01/17 jQuery
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
Python根据区号生成手机号码的方法
2015/07/08 Python
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
python分割列表(list)的方法示例
2017/05/07 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
学生实习自我鉴定
2013/10/11 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
优秀教师单行材料
2014/12/16 职场文书
自我评价优缺点范文
2015/03/11 职场文书
新郎结婚感言
2015/07/31 职场文书
安全教育培训心得体会
2016/01/15 职场文书