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 相关文章推荐
python3读取MySQL-Front的MYSQL密码
May 03 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
TensorFlow实现模型评估
Sep 07 Python
django query模块
Apr 20 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
Django实现简单网页弹出警告代码
Nov 15 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
Django 多对多字段的更新和插入数据实例
Mar 31 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
Python用来做Web开发的优势有哪些
Aug 05 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 Python
Python 全局空间和局部空间
Apr 06 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
PHP的面试题集
2006/11/19 PHP
PHP文件操作实现代码分享
2011/09/01 PHP
YII路径的用法总结
2014/07/09 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
很可爱的输入框
2008/08/03 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
python实现数通设备端口监控示例
2014/04/02 Python
学习python类方法与对象方法
2016/03/15 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
房地产销售经理岗位职责
2014/01/01 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
MySQL Server 层四个日志
2022/03/31 MySQL