xlwt 模块简介:
Python 操作 Excel 表格的模块有很多,主要有:
1、xlrd: 读取 xls 格式Excel文件数据;
2、xlwt: 将数据写入 xls 格式Excel文件;
3、openpyxl: 读取、写入 xlsx 格式Excel文件;
4、pandas: 通过 xlrd 与 xlwt 模块实现xls 格式Excel文件的读写操作;
5、win32com: 获取 Excel 应用接口,实现Excel 文件的读写。
Python操作Excel表格的方法有很多,都是工具没必要每个都学。xlrd 和 xlwt 两个模块用的人比较多,接下来的几篇博客也是重点介绍 xlrd 与 xlwt 两个模块对Excel表格的操作方法。
本篇博客主要介绍Python xlwt 模块将数据写入Excel表格的一些基础操作,包括:
1. 建立工作簿,增加sheet表;
2. 单元格写入数据、单元格合并;
3. 插入位图;
4. 获取sheet表对象属性。
用 xlwt模块 将数据写入Excel 表格,有个固定操作流程:
建立工作簿对象——新建sheet表——将数据写入——保存文件
注:xlwt 模块是Python 的第三方模块,安装 xlwt 模块,命令行输入:pip install xlwt
代码:
# 导入模块
import xlwt
# 新建工作簿
work_book = xlwt.Workbook()
"__init__(self, encoding='ascii', style_compression=0):"
# 默认编码 ASCII
# 增加sheet表
work_sheet = work_book.add_sheet('Test')
# work_sheet = work_book.add_sheet('Test',cell_overwrite_ok=True)
"add_sheet(self, sheetname, cell_overwrite_ok=False):"
# sheetname 增加的单元格名称
# cell_overwrite_ok 默认False:重写单元格报错
"Exception: Attempt to overwrite cell: sheetname='Test' rowx=0 colx=0"
# 如果设置为True则重写单元格不报错
# 保存文件
work_book.save('Test.xls')
add_sheet方法中的cell_overwrite_ok 形参默认值为False,表示:当之前单元格内容已写入内容,再在相同单元格写入内容时,会抛出:
(Exception: Attempt to overwrite cell: sheetname=‘Test’ rowx=x colx=x ) 错误。
True:不会提示上错误,会直接改写原单元格数据。
写入数据(write):
# 单元格操作
work_sheet.write(0,0,'Hello Word')
# work_sheet.write(0,0,'Hello Word 2')
"write(self, r, c, label="", style=Style.default_style)"
# 形参说明:r 行,c 列, label 值,style 单元格格式
将列表数据写入一个单元格(write_rich_text):
# 将列表数据写入一个单元格
test_list = [str(i) for i in range(5)]
work_sheet.write_rich_text(1,0,test_list)
"write_rich_text(self, r, c, rich_text_list, style=Style.default_style):"
# 形参说明:r 行,c 列,rich_text_list 列表或元组
合并单元格(merge):
# 合并单元格
work_sheet.merge(2,3,0,3)
"merge(self, r1, r2, c1, c2, style=Style.default_style):"
# 形参说明:r1 起始行,r2 合并终止行,c1 起始列 c2 合并终止列
合并单元格并写入数据(write_merge):
# 合并单元格并写入
work_sheet.write_merge(4,4,0,3,'合并单元格数据')
"write_merge(self, r1, r2, c1, c2, label="", style=Style.default_style):"
# 形参说明参考合并单元格方法形参说明
# 插入位图
work_sheet.insert_bitmap('01.bmp',5,0)
"insert_bitmap(self, filename, row, col, x = 0, y = 0, scale_x = 1, scale_y = 1):"
insert_bitmap(self, filename, row, col, x = 0, y = 0, scale_x = 1,scale_y = 1):
形参说明:
work_sheet.insert_bitmap('01.bmp',5,8,x=50,y=50,scale_x=0.5,scale_y=0.5)
注:图片必须为bmp位图,且需为24位真色彩,会PhotoShop的可以自己调整一下图片。
完整代码:
# 导入模块
import xlwt
# 新建工作簿
work_book = xlwt.Workbook()
# 增加sheet表
work_sheet = work_book.add_sheet('Test')
# 单元格操作
work_sheet.write(0,0,'Hello Word')
# 将列表数据写入一个单元格
test_list = [str(i) for i in range(5)]
work_sheet.write_rich_text(1,0,test_list)
# 合并单元格
work_sheet.merge(2,3,0,3)
# 合并单元格并写入
work_sheet.write_merge(4,4,0,3,'合并单元格数据')
# 插入位图
work_sheet.insert_bitmap('01.bmp',5,0)
work_sheet.insert_bitmap('01.bmp',5,8,x=50,y=50,scale_x=0.5,scale_y=0.5)
# 保存文件
work_book.save('Test.xls')
Excel文件截图:
注:以下代码都是在上面代码基础上写的。
获取、设置当前sheet表对象名称:
# 获取当前sheet表对象名称
print(work_sheet.get_name())
# 设置当前sheet表名称
work_sheet.set_name('Test_rename')
获取sheet对象的父对象(获取工作中的sheet表的Excel文件对象):
print(work_book)
print(work_sheet.get_parent())
# 打印结果:
#
#
获取所有当前sheet对象中的有效行、列对象:
# 获取所有当前sheet对象中的有效行对象
print(work_sheet.get_rows())
# 打印结果
'''
{0: ,
1: ,
2: ,
3: ,
4: }
'''
# 获取所有当前sheet对象中的有效列对象
print(work_sheet.get_cols())
# 打印结果
# {0: }
注:xlwt 模块中对列对象的获取方法有些问题!如上面的 get_cols() 方法只获取到一个列对象。
获取合并单元格对象的起始合并位置信息:
print(work_sheet.get_merged_ranges())
# 打印结果
# [(2, 3, 0, 3), (4, 4, 0, 3)]
以上就是本篇全部内容,感谢阅读。
下一篇博客内容为 Excel 文件 sheet 表 常用显示设置、窗口冻结、表格保护、默认打印样式 等内容。
【Python与Excel表格】专栏
着重介绍 Python xlwt、xlrd 等模块操作 Excel 表格文件的方法,也会搭配一些实例演练,强化所讲知识点的理解与运用。
感兴趣的朋友,可以点个关注或收藏。创作不易,你的支持是我最大的动力,感谢 !