Python 中的xlrd 和 xlsxwriter 两个模块的学习总结
一,xlrd 和 xlsxwriter 的作用
♦python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlsxwriter是写excel。
二,安装
♦ 到python官网下载http://pypi.python.org 安装,前提是已经安装了python 环境。
♦或者在cmd窗口 pip install xlrd 或xlsxwriter
三,导包
#coding:utf-8
Import xlrd
Import xlsxwriter
四,xlsxwriter 介绍
优点:
1、功能比较强
相对而言,这是除Excel自身之外功能最强的工具了。比如我就用到了它提供的:字体设置、前景色背景色、border设置、视图缩放(zoom)、单元格合并、autofilter、freeze panes、公式、data validation、单元格注释、行高和列宽设置等等。
2、支持大文件写入
如果数据量非常大,可以启用constant memory模式,这是一种顺序写入模式,得到一行数据就立刻写入一行,而不会把所有的数据都保持在内存中。
缺点:
1、不支持读取和修改
作者并没有打算做一个XlsxReader来提供读取操作。不能读取,也就无从修改了。它只能用来创建新的文件。我是利用xlrd把需要的信息读入后,用XlsxWriter创建全新的文件。
另外,即使是创建到一半Excel文件,也是无法读取已经创建出来的内容的(信息应该在,但是并没有相应的接口)。因为它的主要方法是write而不是set。当你在某个单元格写入数据后,除非你自己保存了相关的内容,否则还是没有办法读出已经写入的信息。从这个角度看,你无法做到读出->修改->写回,只能是写入->写入->写入。
2.2、不支持XLS文件
XLS是Office 2013或更早版本所使用的格式,是一种二进制格式的文件。
XLSX则是用一系列XML文件组成的(最后的X代表了XML)一个压缩包。如果非要创建低版本的XLS文件,就请移步xlwt吧。
2.3、暂时不支持透视表(Pivot Table)
基本功能使用:
#
创建一个名称为hello.xlsx的文件,文件的存放路径为
C:\Users\dell\PycharmProjects\HRM_test\result\report
workbook
=xlsxwriter
.Workbook
(' C:\Users\dell\PycharmProjects\HRM_test\result\report\hello.xlsx')
#
创建表单
work_sheet1 = work_book.add_worksheet() #
添加表单,名称默认为shhet1
work_sheet2 = work_book.add_worksheet('
员工表') # 添加表单sheet名字为员工表
work_sheet3 = work_book.add_worksheet() #
添加表单,名称默认为shhet3
# add_format()
格式化单元格
bold = workbook.add_format({ 'bold': 1, #
字体加粗
'border ':6 #
给单元格加框线
'fg_color': 'green', #
单元格背景颜色
'align': 'center', #
对齐方式
'valign': 'vcenter', #
字体对齐方式
})
#
merge_range()合并单元格
worksheet.merge_range('
区域', '合并后内容', 格式化)
worksheet.merge_range('B3:D4', 'Merged Cells', bold)
# set_column
()设置列宽
worksheet.set_column('B:D', 12) #
设置B-D的单元格宽度为12
# set_row
()设置行高
worksheet.set_column(3, 12) #
设置第4行的单元格行高为12
# write_row
()行插入操作
Hang=['Number','Batch1','Batch2']
worksheet.write_row('
行',插入内容,格式)
worksheet.write_row('A1', hang, bold)
# write_column
()列插入操作
lie=['lie1','lie2','lie3']
worksheet.write_row('
列',插入内容,格式)
worksheet.write_row('B2', lie, bold)
# add_chart
(options)添加一个图表对象,options 参数为一个字典类型
chart = workbook.add_chart({'type': 'line'}) #
添加一个线条型的图表对象
常见的图表样式如下:
area
:面积样式的图表
bar
:条形图
column
:柱状图
line
:线条样式的图表
pie
:饼形图
scatter
:散点图
stock
:股票样式的图表
radar
:雷达样式的图表
# insert_char
()插入图表对象
#
插入直方图1
chart1 = workbook.add_chart({'type':'column'}) #
选择竖状图
chart1.add_series({ 'name': '= Sheet1!$B$1',
'categories': '= Sheet1!$A$2:$A$7', # X
轴标值取值
'values': '= Sheet1!$B$2:$B$7', # Y
轴标值取值
'data_labels': {'value': True} #
显示数字,就是直方图上面的数字,默认不显示
})
注意上面写法 '=Sheet1!$B$2:$B$7' Sheet1是指定工作页, $A$2:$A$7是从A2到A7数据,
#
插入直方图2
chart1.add_series({ 'name': '= Sheet1!$B$1',
'categories': '= Sheet1!$A$2:$A$7', # X
轴标值取值
'values': '= Sheet1!$C$2:$C$7', # Y
轴标值取值
'data_labels': {'value': True}
})
chart1.set_title({'name': 'Chart with Data Table'}) #
直方图标题
chart1.set_x_axis({'name': 'Test number'}) #X
轴描述
chart1.set_y_axis({'name': 'Sample length (mm)'})#Y
轴描述
chart1.set_table() #
设置x轴为数据表格式
chart1.set_style(3)#
直方图类型
worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10}) #
直方图插入到 D2位置
workbook.save()
# 将excel文件保存
workbook.close()
# 将excel文件保存关闭,如果没有这一行运行代码会报错
# write(row, col, data,cell_format)
方法:是用来将普通数据写入单元格中(行标、列标、内容、单元格格式)
write.string()
:写入字符串类型数据
wirte_number()
:写入数字型数据
write_blank()
:写入空类型数据
write_formula()
:写入公式型数据
write_datetime()
:写入日期型数据
wirte_boolean()
:写入逻辑型数据
write_url()
:写入超链接型数据
#
示例:
Work_sheet1.write_string(1,1,"python
操作excel", bold) # 在单元格1行1列中写入:“python操作excel”
work_sheet2.write_number('A2', 123456)
work_sheet2.write_blank('A3', None)
work_sheet2.write_formula('B7', '=sum(b1:b5)')
work_sheet2.write_datetime(0, 3, datetime.datetime.strptime('2019-04-18', '%Y-%m-%d'),
work_book.add_format({'num_format': 'yyyy-mm-dd'}))
work_sheet1.write_boolean(0, 0, True)
work_sheet1.write_url('A2', 'http://www.baidu.com')