Python 中的xlrd 和 xlsxwriter 两个模块的学习总结


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')

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM