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使用urllib2模块获取gravatar头像实例
Dec 18 Python
python中set()函数简介及实例解析
Jan 09 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
python实现NB-IoT模块远程控制
Jun 20 Python
Python动态生成多维数组的方法示例
Aug 09 Python
python3.x实现base64加密和解密
Mar 28 Python
对于Python深浅拷贝的理解
Jul 29 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
python日期与时间戳的各种转换示例
Feb 12 Python
python爬虫把url链接编码成gbk2312格式过程解析
Jun 08 Python
python在地图上画比例的实例详解
Nov 13 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
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
你所在的项目是如何确定版本号的
2015/12/28 面试题
公司业务主管岗位职责
2013/12/07 职场文书
班班通校本培训方案
2014/03/12 职场文书
教师求职自荐信
2015/03/26 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
国王的演讲观后感
2015/06/03 职场文书
招商银行收入证明
2015/06/17 职场文书
react 路由Link配置详解
2021/11/11 Javascript