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 相关文章推荐
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python中random模块生成随机数详解
Mar 10 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
点球小游戏python脚本
May 22 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Python requests库参数提交的注意事项总结
Mar 29 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
Flask response响应的具体使用
Jul 15 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 flv视频时间获取函数
2010/06/29 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
angular组件间通讯的实现方法示例
2020/05/07 Javascript
Python文件去除注释的方法
2015/05/25 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
python中自带的三个装饰器的实现
2019/11/08 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
教师实习自我鉴定
2013/12/18 职场文书
员工评语大全
2014/01/19 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
工程项目经理任命书
2014/06/05 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
小学感恩主题班会
2015/08/12 职场文书
小学班主任研修日志
2015/11/13 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
Nginx配置根据url参数重定向
2022/04/11 Servers