python中使用 xlwt 操作excel的常见方法与问题


Posted in Python onJanuary 13, 2019

前言

Python可以操作Excel的模块不止一种,我习惯使用的写入模块是xlwt(一般都是读写模块分开的)

python中使用xlwt操作excel非常方,和Java使用调框架apache poi相比这就是天堂啊,下面话不多说了,来一起看看详细的介绍吧

一.安装xlwt模块

pip3 install xlwt

二.简单使用xlwt

import xlwt #导入模块
workbook = xlwt.Workbook(encoding='utf-8') #创建workbook 对象
worksheet = workbook.add_sheet('sheet1') #创建工作表sheet
worksheet.write(0, 0, 'hello') #往表中写内容,第一各参数 行,第二个参数列,第三个参数内容
workbook.save('students.xls') #保存表为students.xls
#在Java中使用poi操作excel 在创建workbook对象的时候就需要写好表名,创建workbook对象完成后
#这个表就已经存在,但是使用xlwt 需要在最后调用保存的时候为表命名,并且只有调入save方法后才会#创建表

三.为内容设置style

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
#设置字体样式
font = xlwt.Font()
#字体
font.name = 'Time New Roman'
#加粗
font.bold = True
#下划线
font.underline = True
#斜体
font.italic = True

#创建style
style = xlwt.XFStyle()
style.font = font
#根据样式创建workbook
worksheet.write(0, 1, 'world', style)
workbook.save('students.xls')

四.合并单元格

使用xlwt 合并单元格时不用像poi通过style来设置,直接创建和并单元格就可以,

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
#通过worksheet调用merge()创建合并单元格
#第一个和第二个参数单表行合并,第三个和第四个参数列合并,

#合并第0列到第2列的单元格
worksheet.write_merge(0, 0, 0, 2, 'first merge')

#合并第1行第2行第一列的单元格
worksheet.write_merge(0, 1, 0, 0, 'first merge')

workbook.save('students.xls')

如果需要了解具体调合并单元格规则就自己试着合并,查看合并效果.才能清晰明了

五.设置单元格的对齐方式

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
alignment = xlwt.Alignment()
# 水平居中
alignment.horz = xlwt.Alignment.HORZ_CENTER
# 垂直居中
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
#设置单元格宽度
worksheet.col(0).width = 6666

#设置单元格的高度
worksheet.row(0).height_mismatch = True
worksheet.row(0).height = 1000

worksheet.write(0, 0, 'hello world', style)
workbook.save('center.xls')

六.设置单元格调边框

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
border = xlwt.Borders()
# DASHED虚线
# NO_LINE没有
# THIN实线
border.left = xlwt.Borders.THIN
# 设置颜色
border.left_coloure = 0x40b
border.right = xlwt.Borders.THIN

border.right_colour = 0x40b
border.top = xlwt.Borders.THIN

border.top_colour = 0x40b
border.bottom = xlwt.Borders.THIN

border.bottom_colour = 0x40b
style = xlwt.XFStyle()

style.borders = border
worksheet.write(0, 0, 'love', style)
workbook.save('dashed.xls')

七.设置单元格边框

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')

border = xlwt.Borders()
# DASHED虚线
# NO_LINE没有
# THIN实线
border.left = xlwt.Borders.THIN
border.right = xlwt.Borders.THIN
border.top = xlwt.Borders.THIN
border.bottom = xlwt.Borders.THIN

style = xlwt.XFStyle()
style.borders = border
worksheet.write(1, 1, 'love', style)

workbook.save('dashed.xls')

八.设置单元格背景色

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN

# 8 through 63
# 0 = Black, 1 = White,
# 2 = Red, 3 = Green, 4 = Blue,
# 5 = Yellow, 6 = Magenta, 7 = Cyan,
# 16 = Maroon, 17 = Dark Green,
# 18 = Dark Blue, 19 = Dark Yellow ,
# almost brown), 20 = Dark Magenta,
# 21 = Teal, 22 = Light Gray,
# 23 = Dark Gray, the list goes on...

pattern.pattern_fore_colour = 3
style = xlwt.XFStyle()
style.pattern = pattern
worksheet.write(1, 1, 'shit', style)
workbook.save('shit.xls')

九.设置字体颜色

workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('sheet1')

font = xlwt.Font()
# 设置字体为红色
font.colour_index=xlwt.Style.colour_map['red']

style = xlwt.XFStyle()

style.font = font

worksheet.write(0, 1, 'world', style)
workbook.save('students.xls')

遇到的问题:

1.PermissionError: [Errno 13] Permission denied: 'dashed.xls'

原因:测试写入调时候文件被打开了,无法写入,关闭文件后再写入就ok了

2.TypeError: 'module' object is not callable

创建style的时候调错对象将

style = xlwt.Style()

改为

style = xlwt.XFStyle()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python异常处理总结
Aug 15 Python
python追加元素到列表的方法
Jul 28 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
Django 全局的static和templates的使用详解
Jul 19 Python
python对csv文件追加写入列的方法
Aug 01 Python
django中使用POST方法获取POST数据
Aug 20 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
django创建超级用户过程解析
Sep 18 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
用Python实现大文本文件切割的方法
Jan 12 #Python
python实时获取外部程序输出结果的方法
Jan 12 #Python
python实现控制台打印的方法
Jan 12 #Python
python 自定义对象的打印方法
Jan 12 #Python
python设定并获取socket超时时间的方法
Jan 12 #Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 #Python
Python构建图像分类识别器的方法
Jan 12 #Python
You might like
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php短址转换实现方法
2015/02/25 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
js计数器代码
2006/11/04 Javascript
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
js option删除代码集合
2008/11/12 Javascript
动态为事件添加js代码示例
2009/02/15 Javascript
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
jQuery Tools Dateinput使用介绍
2012/07/14 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
ECMAScript6--解构
2017/03/30 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
ES6 javascript中Class类继承用法实例详解
2017/10/30 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
pandas将numpy数组写入到csv的实例
2018/07/04 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
解决pandas展示数据输出时列名不能对齐的问题
2019/11/18 Python
python 实现return返回多个值
2019/11/19 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书