yuanshuai 2020-05-20
需求:
为了做测试或者对爬虫程序爬取数据进行分析汇总,我们时常会将数据生成报表,但是如果我们想将报表生成在Excel中,这时候就可以借助xlsxwriter第三方包来生成图表
分析:
为生成excel准备多维数组类型的数据->数据插入到Excel中->对数据按系列划分生成图表
第一步:准备数据:
使用爬虫爬取网络上关于热门岗位的数据并生成多维数组类型,如下:
data = [
["IOS岗位数", "Android岗位数", "Python岗位数", "物联网岗位数", "Go与区块链岗位数"],
[2000, 4000, 60000, 8000, 1000],
]
第二步:将数据插入Excel中
首先要创建一个Excel文件,然后在Excel中创建一个sheet表单页,最后将数据插入到sheet表单页中
1、创建一个Excel对象
workbook = xlsxwriter.Workbook(“Excel名字.xlsx”)
2、基于Excel对象创建一个sheet表单对象
worksheet = workbook.add_worksheet(name=“sheet表单的名字,不填写就默认为sheet1")
3、将数据写入sheet表单页worksheet
worksheet.write_row( row, col, data, cell_format=None)
worksheet.write_column(row, col, data, cell_format=None)
3.1、可以用A1表示第一行第一列的那个单元格,这个时候后面的data可以是个数组,直接插入一行数据
worksheet.write_column("A1", 一列数据, 样式(非必填项))
worksheet.write_row("A1", 一行数据, 样式(非必填项))
具体代码如下:
# Write some data to add to plot on the chart. data = [ ["IOS岗位数", "Android岗位数", "Python岗位数", "物联网岗位数", "Go与区块链岗位数"], [2000, 4000, 60000, 8000, 1000], ] worksheet.write_column(‘A1‘, data[0]) worksheet.write_column(‘B1‘, data[1])
第三步:生成图表
1.通过Workbook add_chart()方法创建图表对象,其中指定了图表类型:
chart = workbook.add_chart({‘type‘: ‘column‘})
通过type定义图标的类型,比如是柱形图还是饼图
支持的图表类型是:
area:创建区域(实线)样式图表。
bar:创建条形样式(转置直方图)图表。
column:创建列样式(直方图)图表。
line:创建线型图表。
pie:创建饼图样式图表。
doughnut:创建圆环样式图表。
scatter:创建散点图样式图表。
stock:创建库存样式图表。
radar:创建雷达样式图表。
代码如下:
# Create a new Chart object. chart = workbook.add_chart({‘type‘: ‘column‘})
2、添加图标要统计的数据,同一个报表可以添加多个系列
代码如下:
chart.add_series({ ‘categories‘: ‘=Sheet1!$A$1:$A$5‘, ‘values‘: ‘=Sheet1!$B$1:$B$5‘, ‘line‘: {‘color‘: ‘red‘}, ‘name‘: ‘各岗位数汇总‘, })
categories:这将设置图表类别标签。该类别与X轴大致相同。在大多数图表类型中,该categories 属性是可选的,图表将仅假设一个顺序系列 1..n。
values:这是系列中最重要的属性,是每个图表对象的唯一必需选项。此选项将图表与其显示的工作表数据相链接。可以使用上面第一个示例中所示的公式或使用第二个示例中所示的值列表来设置数据范围。
line:设置系列线型的属性,如颜色和宽度。请参见图表格式:行。
name:设置系列的名称。名称显示在公式栏中。对于非饼图/圆环图,它也会显示在图例中。name属性是可选的,如果未提供,则默认为。名称也可以是公式,例如,包含工作表名称,行和列的列表。Series 1..n=Sheet1!$A$1[‘Sheet1‘, 0, 0]
如下图所示:
3、给图表定义名字和样式
代码如下:
chart.set_title({‘name‘: ‘各岗位数汇总_图表‘}) chart.set_style(10)
4、将图表插入到Excel中
代码如下:
# Insert the chart into the worksheet. worksheet.insert_chart(‘A7‘, chart)
5、关闭保存修改代码如下:
workbook.close()