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实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
python实现的简单猜数字游戏
Apr 04 Python
简单了解Python中的几种函数
Nov 03 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
Python Grid使用和布局详解
Jun 30 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
Python  Django 母版和继承解析
Aug 09 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
keras topN显示,自编写代码案例
Jul 03 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
教你怎么用python selenium实现自动化测试
May 27 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
thinkPHP自定义类实现方法详解
2016/11/30 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JavaScript 组件之旅(二)编码实现和算法
2009/10/28 Javascript
JS与框架页的操作代码
2010/01/17 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
jQuery实现移动端滑块拖动选择数字效果
2015/12/24 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
js实现分页功能
2017/05/24 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
2018/07/07 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
wxpython 学习笔记 第一天
2009/02/09 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python实现人人自动回复、抢沙发功能
2018/06/08 Python
浅析python继承与多重继承
2018/09/13 Python
python如何将多个PDF进行合并
2019/08/13 Python
django创建超级用户过程解析
2019/09/18 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
Python基于template实现字符串替换
2020/11/27 Python
python实现按日期归档文件
2021/01/30 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
高三毕业典礼演讲稿
2014/05/13 职场文书
白血病捐款倡议书
2014/05/14 职场文书
献爱心标语
2014/06/21 职场文书
骨干教师申报材料
2014/12/17 职场文书
答谢词范文
2015/01/05 职场文书
心灵点滴观后感
2015/06/02 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
800字作文之大雪
2019/12/04 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js