• python_xlsxwriter模块


      1.workbook类

    • add_worksheet

      用于添加一个新的工作表,sheetname为工作表名称,默认是sheet1,例如:

    1 worksheet = workbook.add_worksheet()
    2 worksheet = workbook.add_worksheet('测试详情')
    • add_format

      用于在工作表中创建一个新的格式对象来格式化单元格

    1 bold = workbook.add_format({
    2     'bold': 1,             #字体加粗
    3     'fg_color': 'green',   #单元格背景颜色
    4     'align': 'center',     #对齐方式
    5     'valign': 'vcenter',   #字体对齐方式
    6 })
    • add_chart

      用于在工作表中创建一个图表对象,内部通过insert_chart()方法来实现,参数为dict类型。

     chart1 = workbook.add_chart({'type':'column'}) #选择竖状图
    • 设置sheet表单元格的行高和列宽

      set_row(row, height)方法,用于设定某一行单元格的行高

      (row:指定行位置,起始下标为0;height:为float类型,设定行高,单位像素)

      set_column(first_col, last_col, width)方法,用于设置一列或多列单元格的列宽

      (irst_col:整型,指定开始列位置,起始下标为0;last_col:整型,指定结束列位置,起始下标为0;width:float类型,设置列宽)

      set_column(“first_col:last_col”, width)方法(first_col和last_col用英文字母表示列名,起始为A)

    1 # 设置sheet表单元格列宽
    2 ws.set_column(0,3,40) #设定第1到4列的列宽为40
    3 ws.set_column("A:A", 40) #设定A列列宽为40
    4 ws.set_column("B:D", 15) #设定B、C、D三列的列宽为15
    5 ws.set_column("E:F", 50) #设定E、F列的列宽为50
    6 
    7 #设置sheet表单元格行高
    8 ws.set_row(0,40) #设置第一行的高度为40
    • 向单元格中写入内容:write

    write(row, col, data,cell_format)方法:是用来将普通数据写入单元格中(行标、列标、内容、单元格格式)

     1 write.string():写入字符串类型数据 
     2 wirte_number():写入数字型数据 
     3 write_blank():写入空类型数据 
     4 write_formula():写入公式型数据 
     5 write_datetime():写入日期型数据 
     6 wirte_boolean():写入逻辑型数据 
     7 write_url():写入超链接型数据
     8 
     9 # 示例:
    10 ws.write(1,1,"python操作excel") #在单元格1行1列中写入:“python操作excel”

      2.chart类

      chart类实图表组件,通过workbook的add_chart方法创建。

    chart1 = workbook.add_chart({'type':'column'}) #选择竖状图
    常见的图表样式如下:
    area:面积样式的图表
    bar:条形图
    column:柱状图
    line:线条样式的图表
    pie:饼形图
    scatter:散点图
    stock:股票样式的图表
    radar:雷达样式的图表

      3.实例

     1 #!/usr/bin/env python
     2 # _*_ coding:utf-8 _*_
     3 __author__ = 'Yinjia'
     4 
     5 import xlsxwriter
     6 
     7 #生成.xlsx文件
     8 workbook = xlsxwriter.Workbook('test_table.xlsx')
     9 #工作页
    10 worksheet = workbook.add_worksheet('测试详情')
    11 worksheet.set_tab_color('red')
    12 
    13 #准备测试数据
    14 bold = workbook.add_format({
    15     'bold': 1,             #字体加粗
    16     'fg_color': 'green',   #单元格背景颜色
    17     'align': 'center',     #对齐方式
    18     'valign': 'vcenter',   #字体对齐方式
    19 })
    20 headings = ['Number','Batch1','Batch2']  #设置表头
    21 data = [
    22     [2,3,4,5,6,7],
    23     [10,40,50,20,10,50],
    24     [30,60,70,50,40,30],
    25 ]
    26 
    27 #插入数据
    28 worksheet.write_row('A1',headings,bold) #行插入操作
    29 worksheet.write_column('A2',data[0]) #列插入操作
    30 worksheet.write_column('B2',data[1])
    31 worksheet.write_column('C2',data[2])
    32 
    33 #插入直方图1
    34 chart1 = workbook.add_chart({'type':'column'}) #选择竖状图
    35 chart1.add_series({
    36     'name': '=测试详情!$B$1',
    37     'categories': '=测试详情!$A$2:$A$7',
    38     'values':   '=测试详情!$B$2:$B$7',#Y轴值
    39     'data_labels': {'value': True} #显示数字,就是直方图上面的数字,默认不显示
    40 })
    41 
    42 #注意上面写法 '=Sheet1!$B$2:$B$7' Sheet1是指定工作页, $A$2:$A$7是从A2到A7数据,
    43 #插入直方图2
    44 chart1.add_series({
    45     'name': '=测试详情!$B$1',
    46     'categories': '=测试详情!$A$2:$A$7',
    47     'values':   '=测试详情!$C$2:$C$7',#Y轴值
    48     'data_labels': {'value': True}
    49 })
    50 
    51 chart1.set_title({'name': 'Chart with Data Table'}) #直方图标题
    52 chart1.set_x_axis({'name': 'Test number'}) #X轴描述
    53 chart1.set_y_axis({'name': 'Sample length (mm)'})#Y轴描述
    54 chart1.set_table() #设置x轴为数据表格式
    55 chart1.set_style(3)#直方图类型
    56 worksheet.insert_chart('D2', chart1, {'x_offset': 25, 'y_offset': 10}) #直方图插入到 D2位置
    57 workbook.close()

      4.效果图

  • 相关阅读:
    如何将 Vim 剪贴板里面的东西粘贴到 Vim 之外的地方? (Ubuntu18.04系统亲测)
    联想还是中国企业吗,我们还应该支持联想吗?以后我还是不要选择联想的产品了吧
    使用Linux桌面壁纸应用variety发现的一些问题
    线性代数预备知识——向量与空间
    线性代数预备知识——向量及方程组
    【线性代数的本质】线性空间、基向量的几何解释
    一时失误的权限设计
    闲谈企业管理执行力的问题
    执行力的不够的系统解决方案
    执行力的问题系统的无奈
  • 原文地址:https://www.cnblogs.com/yinjia/p/9398319.html
Copyright © 2020-2023  润新知