1.xlsxwriter 优点

1.1、功能比较强

相对而言,这是除Excel自身之外功能最强的工具了。比如我就用到了它提供的:字体设置、前景色背景色、

border设置、视图缩放(zoom)、单元格合并、autofilter、freeze panes、公式、data validation、

单元格注释、行高和列宽设置等等。

1.2、支持大文件写入

如果数据量非常大,可以启用constant memory模式,这是一种顺序写入模式,得到一行数据就立刻写入一行,

而不会把所有的数据都保持在内存中。

2.xlsxwriter 缺点

2.1、不支持读取和修改

作者并没有打算做一个XlsxReader来提供读取操作。不能读取,也就无从修改了。它只能用来创建新的文件。

我是利用xlrd把需要的信息读入后,用XlsxWriter创建全新的文件。

另外,即使是创建到一半Excel文件,也是无法读取已经创建出来的内容的(信息应该在,但是并没有相应的接口)。

因为它的主要方法是write而不是set。当你在某个单元格写入数据后,除非你自己保存了相关的内容,

否则还是没有办法读出已经写入的信息。从这个角度看,你无法做到读出->修改->写回,

只能是写入->写入->写入。

2.2、不支持XLS文件

XLS是Office 2013或更早版本所使用的格式,是一种二进制格式的文件。

XLSX则是用一系列XML文件组成的(最后的X代表了XML)一个压缩包。如果非要创建低版本的XLS文件,

就请移步xlwt吧。

2.3、暂时不支持透视表(Pivot Table)

1、xlsxwriter模块的简单使用:

xlsxwriter模块主要用来生成excel表格,插入数据、插入图标等表格操作。

1.1 基本功能

import xlsxwriter #导入模块

workbook = xlsxwriter.Workbook('new_excel.xlsx') #新建excel表

worksheet = workbook.add_worksheet('sheet1') #新建sheet(sheet的名称为"sheet1")

headings = ['Number','testA','testB'] #设置表头

data = [

['2017-9-1','2017-9-2','2017-9-3','2017-9-4','2017-9-5','2017-9-6'],

[10,40,50,20,10,50],

[30,60,70,50,40,30],

] #自己造的数据

worksheet.write_row('A1',headings)

worksheet.write_column('A2',data[0])

worksheet.write_column('B2',data[1])

worksheet.write_column('C2',data[2]) #将数据插入到表格中

workbook.close() #将excel文件保存关闭,如果没有这一行运行代码会报错

查看生成excel的结果:

1.2 将excel中插入折线图

import xlsxwriter #导入模块

workbook = xlsxwriter.Workbook('new_excel.xlsx') #创建新的excel

worksheet = workbook.add_worksheet('sheet1') #创建新的sheet

headings = ['Number','testA','testB'] #创建表头

data = [

['2017-9-1','2017-9-2','2017-9-3','2017-9-4','2017-9-5','2017-9-6'],

[10,40,50,20,10,50],

[30,60,70,50,40,30],

] #自己造的数据

worksheet.write_row('A1',headings)

worksheet.write_column('A2',data[0])

worksheet.write_column('B2',data[1])

worksheet.write_column('C2',data[2]) #将数据插入到表格中

chart_col = workbook.add_chart({'type':'line'}) #新建图表格式 line为折线图

chart_col.add_series( #给图表设置格式,填充内容

{

'name':'=sheet1!$B$1',

'categories':'=sheet1!$A$2:$A$7',

'values': '=sheet1!$B$2:$B$7',

'line': {'color': 'red'},

'data_labels': {'value': True} #显示数字,就是直方图上面的数字,默认不显示

}

)

chart_col.set_title({'name':'测试'})

chart_col.set_x_axis({'name':"x轴"})

chart_col.set_y_axis({'name':'y轴'}) #设置图表表头及坐标轴

chart_col.set_style(1)

worksheet.insert_chart('A10',chart_col,{'x_offset':25,'y_offset':10}) #放置图表位置

workbook.close()

生成图表如下图:

2、xlsxwriter模块常用功能介绍:

2.1、设置单元格的格式:

2.1.1、通过字典的方式直接设置格式:

workfomat = workbook.add_format({

'bold': True, #字体加粗

'border':1, #单元格边框宽度

'align': 'center', #对齐方式

'valign': 'vcenter', #字体对齐方式

'fg_color': '#F4B084', #单元格背景颜色

'text_wrap': True, # 是否自动换行

})

2.1.2、通过format对象的方式设置单元格格式。

workfomat = workbook.add_format()

workfomat.set_bold(1) #设置边框宽度

workfomat.set_num_format('0.00') #格式化数据格式为小数点后两位

workfomat.set_align('center') #设置对齐方式

workfomat.set_fg_color('blue') #设置单元格背景颜色

workfomat.set_bg_color('red') #设置单元格背景颜色 (经测试和上边的功能一样)

2.1.3、一些单元表的操作,像这样的操作还有好多,可以根据自己的需要去进行研究。

worksheet.merge_range('D1:D7','合并单元格') #合并单元格

worksheet.set_tab_color('red') #设置sheet标签颜色

worksheet.set_column('A:D',25) #设置A到D列的列宽为25

worksheet.write_formula('E2','=B2/C2') #设置表格中的计算,‘E2’是计算结果,'=B2/C2'是计算公式

# 写入单个单元格数据

# row:行, col:列, data:要写入的数据, bold:单元格的样式

worksheet1.write(row, col, data, bold)

# 写入一整行, A1:从A1单元格开始插入数据,按行插入, data:要写入的数据(格式为一个列表), bold:单元格的样式

worksheet1.write_row(“A1”,data,bold)

# 写入一整列 , A1:从A1单元格开始插入数据,按列插入, data:要写入的数据(格式为一个列表), bold:单元格的样式

worksheet1.write_column(“A1”,data,bold)

#插入图片, 第一个参数是插入的起始单元格,第二个参数是图片你文件的绝对路径

worksheet1.insert_image('A1','f:\\1.jpg')

#写入超链接

worksheet1.write_url(row, col, "internal:%s!A1" % ("要关联的工作表表名"), string="超链接显示的名字")

#插入图表

""" 参数中的type指的是图表类型,图表类型示例如下:[area:面积图,bar:条形图,column:直方图,

doughnut:环状图,line:折线图,pie:饼状图,scatter:散点图,radar:雷达图,stock:箱线图] """

workbook.add_chartsheet(type="")

# 获得当前excel文件的所有工作表

"""

workbook.worksheets() 用于获得当前工作簿中的所有工作表,

这个函数的存在便利了对于工作表的循环操作,

如果你想在当前工作簿的所有工作表的A1单元格中输入一个字符创‘Hello xlsxwriter’,

那么这个命令就派上用场了。

"""

workbook.worksheets()

# 关闭excel文件

"""

这个命令是使用xlsxwriter操作Excel的最后一条命令,一定要记得关闭文件。

"""

workbook.close()

2.2、常用图表类型:

#area:面积图

#bar:直方图

#colume:柱状图

#line:折线图

#pie:饼图

#doughnut:环形图

#sactter:散点图

#stock:股票趋势图

#radar:雷达图

3、示例代码解析

import xlsxwriter

workbook = xlsxwriter.Workbook('chart_data_table.xlsx') #可以生成.xls文件但是会报错

worksheet = workbook.add_worksheet('Sheet1') #工作页

#准备测试数据

bold = workbook.add_format({'bold': 1})

headings = ['Number', 'Batch 1', 'Batch 2']

data = [

[2, 3, 4, 5, 6, 7],

[10, 40, 50, 20, 10, 50],

[30, 60, 70, 50, 40, 30],

]

#插入数据

worksheet.write_row('A1', headings, bold)#行插入操作 注意这里的'A1'

worksheet.write_column('A2', data[0])#列插入操作 注意这里的'A2'

worksheet.write_column('B2', data[1])

worksheet.write_column('C2', data[2])

#插入直方图1

chart1 = workbook.add_chart({'type': 'column'})#选择 直方图 'column'

chart1.add_series({

'name': '=Sheet1!$B$1',

'categories': '=Sheet1!$A$2:$A$7',#X轴值(实在不知道怎么叫,就用XY轴表示)

'values': '=Sheet1!$B$2:$B$7',#Y轴值

'data_labels': {'value': True}#显示数字,就是直方图上面的数字,默认不显示

})

#注意上面写法 '=Sheet1!$B$2:$B$7' Sheet1是指定工作页, $A$2:$A$7是从A2到A7数据,熟悉excel朋友应该一眼就能认得出来

#插入直方图2

chart1.add_series({

'name': ['Sheet1', 0, 2],

'categories': ['Sheet1', 1, 0, 6, 0],

'values': ['Sheet1', 1, 2, 6, 2],

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

chart1.set_style(3)#直方图类型

worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10}) #直方图插入到 D2位置

workbook.close()

4、添加数据到图表

chart.add_series() 可以帮助我们添加数据到图表,并且设置图表格式。

chart.add_series({

'categories': '=Sheet1!$A$1:$A$5',

'values': '=Sheet1!$B$1:$B$5',

'line': {'color': 'red'},

})

# 数字定位,第一行数字位置,第一列数字位置,最后一行数字位置,最后一列数字位置。

chart.add_series({

'categories': ['Sheet1', 0, 0, 4, 0],

'values': ['Sheet1', 0, 1, 4, 1],

'line': {'color': 'red'},

})

可以设置的系列选项是:

values:这是系列中最重要的属性,是每个图表对象的唯一必需选项。此选项将图表与其显示的工作表数据相链接。可以使用上面第一个示例中所示的公式或使用第二个示例中所示的值列表来设置数据范围。

categories:这将设置图表类别标签。该类别与X轴大致相同。在大多数图表类型中,该categories 属性是可选的,图表将仅假设一个顺序系列 1..n。

name:设置系列的名称。名称显示在公式栏中。对于非饼图/圆环图,它也会显示在图例中。name属性是可选的。

line:设置系列线型的属性,如颜色和宽度。

border:设置系列的边框属性,如颜色和样式。

fill:设置系列的实心填充属性,例如颜色。

pattern:设置系列的图案填充属性。

gradient:设置系列的渐变填充属性。

marker:设置系列标记的属性,如样式和颜色。

trendline:设置系列趋势线的属性,如线性,多项式和移动平均类型。

smooth:设置线系列的平滑属性。

y_error_bars:设置图表系列的垂直误差范围。

x_error_bars:设置图表系列的水平误差范围。

data_labels:设置系列的数据标签。

points:设置系列中各个点的属性。

invert_if_negative:反转负值的填充颜色。通常仅适用于柱形图和条形图。

overlap:在条形图/柱形图中设置系列之间的重叠。范围是+/- 100.默认值为0。

gap:在条形图/柱形图中设置系列之间的间隙。范围是0到500.默认值是150。

可以在图表中添加多个系列。

chart.add_series({

'categories': '=Sheet1!$A$1:$A$5',

'values': '=Sheet1!$B$1:$B$5',

'gap': 200,

})

4.1 设置X轴Y轴(行列)属性

#设置Y轴属性同X轴

chart.set_x_axis({

'name': 'Earnings per Quarter',

'name_font': {'size': 14, 'bold': True},

'num_font': {'italic': True },

})

name:设置轴的名称(也称为标题或标题)。名称显示在X轴下方。

name_font:设置轴名称的字体属性。

name_layout:以图表相对单位设置轴标题的位置。

name_font:设置轴编号的字体属性。

line:设置轴线类型的属性,例如颜色和宽度。

fill:设置轴的实心填充属性,例如颜色。

pattern:设置轴的图案填充属性。

gradient:设置轴的渐变填充属性。

min:设置轴范围的最小值。(仅适用于数值和日期轴)

max:设置轴范围的最大值。(仅适用于数值和日期轴)

minor_unit:设置轴单位范围内次要单位的增量。(仅适用于数值和日期轴)

major_unit:设置轴范围内主要单位的增量。(仅适用于数值和日期轴)

interval_unit:设置类别轴的间隔单位。应该是一个整数值。(仅适用于类别轴)

interval_tick:设置类别轴的滴答间隔。应该是一个整数值。(仅适用于类别轴)

crossing:设置y轴穿过x轴的位置。(适用于所有轴)

position_axis:将轴定位在轴刻度标记上或之间。(仅适用于类别轴)

reverse:反转轴类别或值的顺序。(适用于类别,日期和数值轴)

label_position:设置轴的“轴标签”位置。可以使用以下位置:next_to (the default) ,high, low, none

label_align:将“轴标签”与轴对齐。(仅适用于类别轴)center (the default), right, left

major_gridlines:配置轴的主要网格线。可用的属性是:visible, line

visible:配置轴的可见性

date_axis:此选项用于将具有日期或时间数据的类别轴视为日期轴。

text_axis:此选项用于将类别轴明确视为文本轴。

minor_tick_mark:将轴次要刻度标记类型/位置设置为以下值之一,none, inside, outside, cross (inside and outside)

display_units:设置轴的显示​​单位。hundreds、 thousands、 ten_thousands、 hundred_thousands、 millions、 ten_millions、 hundred_millions、 billions、 trillions。

chart.set_x_axis({'name': 'Earnings per Quarter'})

chart.set_x_axis({'name_font': {'bold': True, 'italic': True}})

chart.set_x_axis({

'name': 'X axis',

'name_layout': {

'x': 0.34,

'y': 0.85,

}

})

chart.set_x_axis({'name_font': {'bold': True, 'italic': True}})

chart.set_x_axis({'num_format': '#,##0.00'})

chart.set_y_axis({'num_format': '0.00%'})

chart.set_x_axis({'line': {'none': True}})

chart.set_x_axis({'min': 3, 'max': 6})

chart.set_x_axis({'minor_unit': 0.4, 'major_unit': 2})

chart.set_x_axis({'interval_unit': 5})

chart.set_x_axis({'interval_tick': 2})

chart.set_x_axis({'crossing': 3})

chart.set_y_axis({'crossing': 'max'})

chart.set_x_axis({'position_axis': 'on_tick'})

chart.set_x_axis({'position_axis': 'between'})

chart.set_x_axis({'reverse': True})

chart.set_x_axis({'label_position': 'high'})

chart.set_y_axis({'label_position': 'low'})

chart.set_x_axis({'label_align': 'left'})

chart.set_x_axis({

'major_gridlines': {

'visible': True,

'line': {'width': 1.25, 'dash_type': 'dash'}

},

})

chart.set_y_axis({'visible': False})

chart.set_x_axis({'text_axis': True})

chart.set_x_axis({'major_tick_mark': 'none',

'minor_tick_mark': 'inside'})

chart.set_x_axis({'display_units': 'thousands'})

chart.set_y_axis({'display_units': 'millions'})

4.2 设置图表辅助X轴(或Y轴):

chart.set_x2_axis() #和x轴的属性设置相同。

4.3 合并两个不同类型的图表

图表 combine()方法用于组合两个不同类型的图表,例如 柱状图 和 折线图 :

# 第一种图表类型

column_chart = workbook.add_chart({'type': 'column'})

column_chart.add_series({...})

# 第二种图表类型

line_chart = workbook.add_chart({'type': 'line'})

line_chart.add_series({...})

# 合并图表

column_chart.combine(line_chart)

4.4 设置图标尺寸

set_size()方法用于设置图表的尺寸。width, height, x_scale, y_scale, x_offset, y_offset。

在 width和 height以像素为单位。默认图表宽度x高度为480 x 288像素。可以通过设置width和height或通过设置x_scale和来修改图表的大小 y_scale:

chart.set_size({'width': 720, 'height': 576})

# 两者一样

chart.set_size({'x_scale': 1.5, 'y_scale': 2})

worksheet.insert_chart('E2', chart, {'x_offset': 25, 'y_offset': 10})

4.5 设置图表标题

该 set_title()方法用于设置图表标题的属性。

name:设置图表的名称(标题)。名称显示在图表上方。名称也可以是公式,例如,=Sheet1!$A$1包含工作表名称,行和列的列表。name属性是可选的。

name_font:设置图表标题的字体属性。

overlay:允许标题覆盖在图表上。通常与下面的布局属性一起使用。

layout:以图表相对单位设置标题的位置:(x, y)

none:默认情况下,Excel会为具有单个系列和用户定义的系列名称的图表添加自动图表标题。该none选项会关闭此默认标题。它还会关闭所有其他set_title()选项。

chart.set_title({'name': 'Year End Results'})

chart.set_title({

'name': 'Title',

'overlay': True,

'layout': {

'x': 0.42,

'y': 0.14,

}

})

chart.set_title({'none': True})

4.6 设置图表图例选项

该set_legend()方法用于设置图表图例的属性。

none:在Excel图表中,默认情况下图例处于启用状态。该none选项会关闭图表图例

position:设置图表图例的位置:

font:设置图表图例的字体属性。

border:设置图例的边框属性,例如颜色和样式。

fill:设置图例的实心填充属性,例如颜色。

pattern:设置图例的图案填充属性。

gradient:设置图例的渐变填充属性。

delete_series:这允许您从图例中删除一个或多个系列(系列仍将显示在图表上)。

chart.set_legend({'none': True})

chart.set_legend({'position': 'none'})

chart.set_legend({'position': 'bottom'})

chart.set_legend({'font': {'size': 9, 'bold': True}})

chart.set_legend({'delete_series': [0, 2]})

layout:以图表相对单位设置图例的位置:(x, y)

chart.set_legend({

'layout': {

'x': 0.80,

'y': 0.37,

'width': 0.12,

'height': 0.25,

}

})

4.7 设置图表区域

该set_chartarea()方法用于设置图表区域的属性。在Excel中,图表区域是图表背后的背景区域。

border:设置图表区域的边框属性,例如颜色和样式。

fill:设置图表区域的实心填充属性,例如颜色。

pattern:设置图表区域的图案填充属性。

gradient:设置图表区域的渐变填充属性。

chart.set_chartarea({

'border': {'none': True},

'fill': {'color': 'red'}

})

4.8设置绘图区域

该set_plotarea()方法用于设置图表的绘图区域的属性。

border:设置plotarea的边框属性,如颜色和样式。

fill:设置plotarea的实心填充属性,例如颜色。

pattern:设置plotarea的图案填充属性。

gradient:设置plotarea的渐变填充属性。

layout:以图表相对单位设置plotarea 的位置:(x, y)

chart.set_plotarea({

'border': {'color': 'red', 'width': 2, 'dash_type': 'dash'},

'fill': {'color': '#FFFFC2'}

})

4.9 设置图表样式类型

set_style()方法用于将图表的样式设置为Excel中“设计”选项卡上可用的48种内置样式之一:

chart.set_style(37)

4.10 设置轴数据表的属性

set_table()方法在水平轴下方添加一个数据表,数据表只能显示条形图,柱形图,折线图,面积图和股票图。

chart.set_table()

4.11 其他图表设置

设置图表上下栏的属性,set_up_down_bars(),上下栏只能应用于折线图和股票图表。添加fill,pattern或 gradient和border。

chart.set_up_down_bars({

'up': {

'fill': {'color': '#00B050'},

'border': {'color': 'black'}

},

'down': {

'fill': {'color': 'red'},

'border': {'color': 'black'},

},

})

正在上传…重新上传取消

设置图表下拉线的属性,set_drop_lines()

chart.set_drop_lines({'line': {'color': 'red',

'dash_type': 'square_dot'}})

设置图表高低线的属性,set_high_low_lines()

chart.set_high_low_lines({

'line': {

'color': 'red',

'dash_type': 'square_dot'

}

})

设置在图表中显示空白数据,show_blanks_as()

chart.show_blanks_as('span')

xlsxwriter去掉网格线_python 中 xlsxwriter 模块的使用相关推荐

  1. python中模块是什么意思_Python中的模块是什么

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include 引入math.h这个头文件,否则是无法正常进行调用的. 那么在Python中,如果 ...

  2. python处理回显_Python中getpass模块无回显输入源码解析

    本文主要讨论了python中getpass模块的相关内容,具体如下. getpass模块 昨天跟学弟吹牛b安利Python标准库官方文档的时候偶然发现了这个模块.仔细一看内容挺少的,只有两个主要api ...

  3. python json模块有什么用_Python中json模块与jsonpath模块的区别是什么

    Python中json模块与jsonpath模块的区别是什么 发布时间:2021-02-02 11:15:52 来源:亿速云 阅读:94 作者:小新 这篇文章主要介绍了Python中json模块与js ...

  4. python中pyecharts模块全局配置_python中pyecharts模块的使用示例

    python中pyecharts模块的使用示例 发布时间:2020-11-24 09:28:53 来源:亿速云 阅读:66 作者:小新 小编给大家分享一下python中pyecharts模块的使用示例 ...

  5. python中path语句什么意思_python中jsonpath模块有何用法?

    小编做项目的时候,遇到一个问题,虽然解决了,但是也是深入的思考的一番,遇到问题是这样的,我们返回的基本格式都是json,但是json都是层层递进的,如果想审核json中心找到字符串等内容,要一层一层的 ...

  6. python中pickle模块的用法_Python中json模块和pickle模块的简单介绍(附示例)

    本篇文章给大家带来的内容是关于Python中json模块和pickle模块的简单介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Python中的json模块和pickl ...

  7. python argparse模块详解_python中argparse模块用法实例详解

    本文实例讲述了python中argparse模块用法.分享给大家供大家参考.具体分析如下: 平常在写命令行工具的时候,经常会带参数,所以用python中的argparse来实现. # -*- codi ...

  8. python xlrd课程_python中xlrd模块的使用详解

    一.xlrd的安装 打开cmd输入pip install xlrd安装完成即可 二.xlrd模块的使用 下面以这个工作簿为例 1.导入模块 import xlrd 2.打开工作薄 # filename ...

  9. python url模块介绍_python 中 urlparse 模块介绍

    urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...

  10. python中自带的模块_python中的模块详解

    概念 python中的模块是什么?简而言之,在python中,一个文件(以".py"为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件.模块可以被项 ...

最新文章

  1. jQuery学习笔记(Ajax)
  2. SuperMap 存量房交易网上备案及资金监管管理平台
  3. 一段Spring代码引起的调用绑定总结
  4. linux下tomcat的安装和配置
  5. bert简介_关于BERT:你不知道的事
  6. 跟计算机断层扫描相关的技术,计算机断层扫描技术(简称PET)
  7. 【WC2018】通道【边分治】【虚树】【树的直径】
  8. [iOS]Unable to run app in Simulator
  9. 一道贪心:加括号使算式的值最大
  10. Python学习——复习5次课(12月2日)
  11. ET框架——demo与自定义登录
  12. 概率论与数理统计 4 Continuous Random Variables and Probability Distributions(连续随机变量与概率分布)(上篇)
  13. Linux 性能分析命令详解
  14. 55个经典开源Windows工具
  15. oracle ogg启动不了,OGG启动REPLICAT进程遇到OGG-00212错误 | 信春哥,系统稳,闭眼上线不回滚!...
  16. 第三章 人类社会及其发展规律
  17. .关机助手,很好用的Windows桌面关机小工具(免费版)
  18. 用计算机唱出山,抖音出山原唱是谁 抖音出山歌词完整版
  19. 上海交易所新股申购规则
  20. 读决战大数据-车品觉

热门文章

  1. php判断4的倍数,4的倍数特征(4的倍数特征规律怎样找)
  2. 4. 多元函数微分学
  3. 软件测试之接口自动化面试题汇总
  4. 利用PS制作GIF动图
  5. 2021年中国柠檬酸供需现状与行业前景分析,受出口景气度上升价格持续上涨「图」
  6. 计算机win10搜不到wifi,Win10为何搜索不到Wifi?搜索不到Wifi的解决方法
  7. python中相对路径怎么写,python相对路径写法
  8. NumberOptional:一个字符串转数字的工具
  9. 成语接龙Java代码实现
  10. matlab命令窗口双大于号不显示了 回车命令不管用了,怎么改才能恢复