安装

pip install XlsxWriter

或者下载最新版本的,然后安装

tar -zxvf XlsxWriter-1.2.3.tar.gz
cd XlsxWriter-1.2.3
python setup.py install

简单使用例子

# xlsxwriter只可以新建一个excel,不可以读取和更新
# 创建一个workbook 和增加一个worksheet,默认为sheet1...,也可以直接为sheet命名,例如下边的test
workbook = xlsxwriter.Workbook('data.xlsx')
# 添加 sheet
worksheet = workbook.add_worksheet()  # 默认为 Sheet1.
worksheet1 = workbook.add_worksheet("test")  # test
worksheet2 = workbook.add_worksheet()        # 默认为 Sheet3.# 测试数据
expenses = (['Rent', 1000],['Gas',   100],['Food',  300],['Gym',    50],
)# 从首行、首列开始.
row = 0
col = 0# 通过迭代写入数据.
for item, cost in (expenses):worksheet.write(row, col,     item)worksheet.write(row, col + 1, cost)row += 1# 使用公式,例如B列的和.
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')# 只有此函数才可以生成excel
workbook.close()

添加格式显示

颜色查看:Working with Colors
详情查看:The Format Class,Workbook Class,Worksheet Class

from datetime import datetime
import xlsxwriterworkbook = xlsxwriter.Workbook('Expenses03.xlsx')
worksheet = workbook.add_worksheet()# 定义一个红色+黑体的格式.
bold = workbook.add_format({'bold': 1, "color": "red"})# 设置钱数的格式.
money_format = workbook.add_format({'num_format': '$#,##0'})# 设置时间格式.
date_format = workbook.add_format({'num_format': 'mmmm d yyyy'})# 设置列、行宽.
worksheet.set_column(1, 1, 15)
# worksheet.set_row(1, 1, 15)# 定义表头.
worksheet.write('A1', 'Item', bold)
worksheet.write('B1', 'Date', bold)
worksheet.write('C1', 'Cost', bold)# 测试数据.
expenses = (['Rent', '2013-01-13', 1000],['Gas', '2013-01-14', 100],['Food', '2013-01-16', 300],['Gym', '2013-01-20', 50],
)# 初始化行列.
row = 1
col = 0for item, date_str, cost in (expenses):# 转换时间格式.date = datetime.strptime(date_str, "%Y-%m-%d")worksheet.write_string(row, col, item)worksheet.write_datetime(row, col + 1, date, date_format)worksheet.write_number(row, col + 2, cost, money_format)row += 1# 使用公式C2到C5的和.
worksheet.write(row, 0, 'Total', bold)
worksheet.write(row, 2, '=SUM(C2:C5)', money_format)workbook.close()

添加图表

详情查看:Working with Charts,The Chart Class,The Chartsheet Class

import xlsxwriterworkbook = xlsxwriter.Workbook('chart.xlsx')
worksheet = workbook.add_worksheet()# 创建一个类型为column的图表对象.
chart = workbook.add_chart({'type': 'column'})# Write some data to add to plot on the chart.
data = [[1, 2, 3, 4, 5],[2, 4, 6, 8, 10],[3, 6, 9, 12, 15],
]worksheet.write_column('A1', data[0])
worksheet.write_column('B1', data[1])
worksheet.write_column('C1', data[2])# 配置chart. 添加数据 series.
chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
# chart.add_series({'values': '=Sheet1!$B$1:$B$5'})
# 或者使用一个list添加series(下边),[sheetname, first_row, first_col, last_row, last_col]
chart.add_series({'values': ['Sheet1', 0, 1, 4, 1], 'line': {'color': 'red'}})
chart.add_series({'values': '=Sheet1!$C$1:$C$5'})# 添加标题(图表上边)
chart.set_title({'name': 'Title',
})
# 添加x轴标题
chart.set_x_axis({'name': 'X axis',
})
# 添加y轴标题
chart.set_y_axis({'name': 'y axis',
})
# 图表下边插入数据表
chart.set_table()
# 将表插入到worksheet.
worksheet.insert_chart('A7', chart)
workbook.close()

chart的类型:

  • area: 区域(填充线)样式表.
  • bar: 条形图样式(颠倒的直方图).
  • column: 列样式(柱状图)图表.
  • line: 线型图表.
  • pie: 扇形图表.
  • doughnut: 甜甜圈样式图表.
  • scatter: 散点样式图表.
  • stock: 股票样式图表.
  • radar: 雷达样式图表.

也可以添加子类型,支持的子类型如下:

workbook.add_chart({'type': 'bar', 'subtype': 'stacked'})

area(stacked, percent_stacked)
bar( stacked,percent_stacked)
column( stacked,percent_stacked)
scatter(straight_with_markers, straight, smooth_with_markers,smooth)
radar(with_markers,filled)

利用公式

详情参考:Working with Formulas

worksheet.write_formula('A1', '=10*B1 + C1')

添加过滤

详情参考:Working with Autofilters,example

import xlsxwriter
data = [["Region", "Item", "Volume", "Month"],["East", "Apple", 5000, "july"],["west", "Grape", 7000, "December"],["East", "orange", 4000, "October"],["East", "Grape", 7000, "October"],["East", "Apple", 4000, "April"],["East", "Grape", 6000, "February"],["South", "orange", 3000, "November"],["West", "Grape", 2000, "October"],["East", "Apple", 4000, "April"],["North", "Grape", 6000, "February"],]workbook = xlsxwriter.Workbook('autofilter.xlsx')# 添加不同的sheet.
worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()# header格式.
bold = workbook.add_format({'bold': 1})headers = data[0]
# 添加表头,为每个sheet.
for worksheet in (workbook.worksheets()):# 列宽.worksheet.set_column('A:D', 12)# 行高.worksheet.set_row(0, 20, bold)worksheet.write_row('A1', headers)
worksheet1.autofilter('A1:D51')
# worksheet1.autofilter(0, 0, 10, 3)  # 和上边的作用一样,不同写法.row = 1
for row_data in (data[1:]):worksheet1.write_row(row, 0, row_data)row += 1# ************************sheet2******************************
worksheet2.autofilter(0, 0, 50, 3)
# 添加过滤,Region等于East的
worksheet2.filter_column(0, 'Region == East')# 隐藏其余的.
row = 1
for row_data in (data[1:]):region = row_data[0]if region == 'East':passelse:worksheet2.set_row(row, options={'hidden': True})worksheet2.write_row(row, 0, row_data)row += 1# **********************sheet3***********************
worksheet3.autofilter('A1:D51')
worksheet3.filter_column('A', 'x == East or x == South')
row = 1
for row_data in (data[1:]):region = row_data[0]if region == 'East' or region == 'South':passelse:worksheet3.set_row(row, options={'hidden': True})worksheet3.write_row(row, 0, row_data)row += 1# ********************sheet4 ***********************
worksheet4.autofilter('A1:D51')
worksheet4.filter_column('A', 'x == East')
worksheet4.filter_column('C', 'x > 3000 and x < 8000')
row = 1
for row_data in (data[1:]):region = row_data[0]volume = int(row_data[2])if region == 'East' and volume > 3000 and volume < 8000:passelse:worksheet4.set_row(row, options={'hidden': True})worksheet4.write_row(row, 0, row_data)row += 1
workbook.close()


数据验证

详情参考:Working with Data Validation

条件格式

详情参考:Working with Conditional Formatting

import xlsxwriter
data = [["Region", "Item", "Volume", "Month"],["East", "Apple", 5000, "july"],["west", "Grape", 7000, "December"],["East", "orange", 4000, "October"],["East", "Grape", 7000, "October"],["East", "Apple", 4000, "April"],["East", "Grape", 6000, "February"],["South", "orange", 3000, "November"],["West", "Grape", 2000, "October"],["East", "Apple", 4000, "April"],["North", "Grape", 6000, "February"],]workbook = xlsxwriter.Workbook('autofilter.xlsx')# 添加不同的sheet.
worksheet1 = workbook.add_worksheet()# header格式.
bold = workbook.add_format({'bold': 1})headers = data[0]
# 列宽.
worksheet1.set_column('A:D', 12)
# 行高.
worksheet1.set_row(0, 20, bold)
worksheet1.write_row('A1', headers)
worksheet1.autofilter('A1:D51')
# worksheet1.autofilter(0, 0, 10, 3)  # 和上边的作用一样,不同写法.row = 1
for row_data in (data[1:]):worksheet1.write_row(row, 0, row_data)row += 1
format1 = workbook.add_format({'bg_color':   '#FFC7CE','font_color': '#9C0006'})
format2 = workbook.add_format({'bg_color':   '#FFEB9C','font_color': '#9C6500'})worksheet1.conditional_format('C2:C10', {'type':     'cell','criteria': '>=','value':    5000,'format':   format1})
worksheet1.conditional_format('C2:C10', {'type':     'cell','criteria': '<=','value':    3000,'format':   format2})workbook.close()

添加表格

详情参考:Working with Worksheet Tables

当处于’constant_memory’ 模式时,Table不可用

import xlsxwriter
data = [['Apples', 10000, 5000, 8000, 6000],['Pears',   2000, 3000, 4000, 5000],['Bananas', 6000, 6000, 6500, 6000],['Oranges',  500,  300,  200,  700]]
workbook = xlsxwriter.Workbook('tables.xlsx')
worksheet = workbook.add_worksheet()
worksheet1 = workbook.add_worksheet()# sheet1
worksheet.set_column('B:G', 12)
formula = r'=SUM(Table1[@[Quarter 1]:[Quarter 4]])'
worksheet.add_table('B3:G7', {'data': data,'columns': [{'header': 'Product'},{'header': 'Quarter 1'},{'header': 'Quarter 2'},{'header': 'Quarter 3'},{'header': 'Quarter 4'},{'header': 'Year', 'formula': formula},]})# sheet 2
options = {'data': data,'total_row': 1,'columns': [{'header': 'Product', 'total_string': 'Totals'},{'header': 'Quarter 1', 'total_function': 'sum'},{'header': 'Quarter 2', 'total_function': 'sum'},{'header': 'Quarter 3', 'total_function': 'sum'},{'header': 'Quarter 4', 'total_function': 'sum'},{'header': 'Year','formula': '=SUM(Table2[@[Quarter 1]:[Quarter 4]])','total_function': 'sum'},]}
# Add a table to the worksheet.
worksheet1.add_table('B3:G8', options)
workbook.close()


pandas 利用xlsxwriter引擎

详情参考:Working with Python Pandas and XlsxWriter

import pandas as pd
# Create a Pandas dataframe from the data.
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')
# Close the Pandas Excel writer and output the Excel file.
writer.save()

性能

详情参考:Working with Memory and Performance

参考

  • https://xlsxwriter.readthedocs.io/examples.html
  • https://xlsxwriter.readthedocs.io/index.html
  • https://github.com/jmcnamara/XlsxWriter/tree/master/examples

xlsxwriter 简单用法相关推荐

  1. 反编译工具jad简单用法

    反编译工具jad简单用法 下载地址: [url]http://58.251.57.206/down1?cid=B99584EFA6154A13E5C0B273C3876BD4CC8CE672& ...

  2. QCustomPlot的简单用法总结

    QCustomPlot的简单用法总结 第一部分:QCustomPlot的下载与安装 第二部分:QCustomPlot在VS2013+QT下的使用 QCustomPlot的简单用法总结    写在前面, ...

  3. python matplotlib 简单用法

    python matplotlib 简单用法 具体内容请参考官网 代码 import matplotlib.pyplot as plt import numpy as np # 支持中文 plt.rc ...

  4. Windump网络命令的简单用法

    Windump网络命令的简单用法 大家都知道,unix系统下有个tcpdump的抓包工具,非常好用,是做troubleshooting的好帮手.其实在windows下也有一个类似的工作,叫windum ...

  5. Android TabLayout(选项卡布局)简单用法实例分析

    本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...

  6. shell expect的简单用法

    为什么需要expect?     我们通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如 telnet服务器等进 ...

  7. Shellz中awk的简单用法

    其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...

  8. python装饰器实例-Python装饰器原理与简单用法实例分析

    本文实例讲述了Python装饰器原理与简单用法.分享给大家供大家参考,具体如下: 今天整理装饰器,内嵌的装饰器.让装饰器带参数等多种形式,非常复杂,让人头疼不已.但是突然间发现了装饰器的奥秘,原来如此 ...

  9. python装饰器实例-Python装饰器简单用法实例小结

    本文总结分析了Python装饰器简单用法.分享给大家供大家参考,具体如下: 装饰器在python中扮演着很重要的作用,例如插入日志等,装饰器可以为添加额外的功能同时又不影响业务函数的功能. 比如,运行 ...

  10. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )

    文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...

最新文章

  1. 将文件名和文件修改时间批量输出至Excel中
  2. 有用的SAP System Administration T-CODE
  3. B-树的插入、查找、删除
  4. 使用JPA + Eclipselink操作PostgreSQL数据库
  5. 计算机超频的好处与坏处,CPU超频有什么坏处,到底会不会有副作用?
  6. linux-远程管理-xshell
  7. paramiko模块实现堡垒机的思路
  8. Linux cannot remove 'XXX': Is a directory 解决办法
  9. android内容提供器读取图片,android实现拍照或从相册选取图片
  10. np.linspace函数用法
  11. 联想电脑如何启动BIOS并开启CPU虚拟化功能
  12. 然之协同 PHP,然之协同办公系统5.2开源版官方下载
  13. RTNETLINK answers: File exists的解决方案
  14. 域服务器无法修改域账户密码,域用户使用Ctrl+Alt+del不能修改密码
  15. 博实乐公布季度业绩,前三季度收入增长46.6%
  16. MFC中UpdateData(FALSE)与UpdateData(TRUE)的区别
  17. 为何概述(翻译)CS229这个系列
  18. indesign怎么查找拼音_用Indesign CS 巧排拼音的方法
  19. MATLAB | 世界杯来用MATLAB画个足球玩叭~
  20. 解决iOS的H5页面卡顿以及键盘回落后留白问题

热门文章

  1. Salesforce入门教程(中文)-020 VF使用静态资源移动端开发(未完)
  2. Hive实战—时间滑动窗口计算
  3. 配置DTcms伪静态功能图文教程
  4. 修正Linux下WPS字体库缺失
  5. python二分法求函数零点_在SciPy/NumPy中求复函数的零点
  6. layui颜色选择器 拾色器结合表单记录
  7. 运用ssis组件实现邮件发送,内容来源于数据库表
  8. 给初学编程的人的忠告
  9. 服务器虚拟网卡驱动卸载,Win10安装和卸载万能网卡版驱动的方法
  10. 一张图带你复习《数字信号处理》、《数字电路》、《电磁场理论》