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 第一步 hello world
Sep 25 Python
Python库urllib与urllib2主要区别分析
Jul 13 Python
python标准算法实现数组全排列的方法
Mar 17 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
python http接口自动化脚本详解
Jan 02 Python
python实现单向链表详解
Feb 08 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
如何基于Python按行合并两个txt
Nov 03 Python
用Python提取PDF表格的方法
Apr 11 Python
python内置模块之上下文管理contextlib
Jun 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
jquery ajax abort()的使用方法
2010/10/28 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
Jquery性能优化详解
2014/05/15 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
jQuery unbind 删除绑定事件详解
2016/05/24 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Python中endswith()函数的基本使用
2015/04/07 Python
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
pygame播放音乐的方法
2015/05/19 Python
Python爬虫中urllib库的进阶学习
2018/01/05 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
python多进程并行代码实例
2019/09/30 Python
Python 中@property的用法详解
2020/01/15 Python
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
期末自我鉴定
2014/02/02 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
浅谈Python协程asyncio
2021/06/20 Python
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
python 安全地删除列表元素的方法
2022/03/16 Python