zoukankan      html  css  js  c++  java
  • Python项目开发公用方法--excel生成方法

    在实际开发中,我们有时会遇到数据导出的需求。一般的,导出的文件格式为Excel形式。

    那么,excel的生成就适合抽离出一个独立的公用方法来实现:

     1 def generate_excel(excel_name, title_list, properties, data):
     2     """
     3     生成指定的excel文件,并返回文件的路径,文件保存在static/files/excels下,并自动追加时间戳
     4     :param excel_name: 文件名, 注意不要带文件类型后缀
     5     :param title_list: 标题
     6     :param properties: 对应的属性名,方法按照".property_name"的方式获取值
     7     :param data: 数据,建议为query_set
     8     :return: 生成文件的全路径
     9     """
    10     now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    11     workbook = xlsxwriter.Workbook("{}/{}{}.xlsx".format(EXCEL_DIR, excel_name, now))
    12     worksheet = workbook.add_worksheet(excel_name)
    13     worksheet.set_first_sheet()
    14     for i in range(len(title_list)):
    15         worksheet.set_column('{}:{}'.format(chr(65 + i), chr(66 + i)), 20)
    16 
    17     excel_format = workbook.add_format()
    18     excel_format.set_border(1)
    19     excel_format.set_align('center')
    20     excel_format.set_text_wrap()
    21 
    22     format_title = workbook.add_format()
    23     format_title.set_border(1)
    24     format_title.set_bg_color('#cccccc')
    25     format_title.set_align('center')
    26     format_title.set_bold()
    27 
    28     # 表头
    29     worksheet.write_row('A1', title_list, format_title)
    30     i = 2
    31     for datum in data:
    32         location = 'A' + str(i)
    33         worksheet.write_row(location, [eval("datum.{}".format(key)) for key in properties], excel_format)
    34         i += 1
    35 
    36     workbook.close()
    37     file_path = "{}/{}{}.xlsx".format(EXCEL_DIR, excel_name, now)
    38     if file_path:
    39         os.chmod(file_path, 0777)
    40     return file_path

    该方法接收必要的数据生成excel,返回最终的路径。

  • 相关阅读:
    watir-webdriver使用过程中异常
    分治算法
    回溯算法
    线性时间求取第 K 大数
    深度和广度优先搜索算法
    排序优化——模拟栈及三路快排
    排序算法之——归并排序和快速排序
    数据结构和算法之——算法复杂度分析
    LeetCode 10——正则表达式匹配
    线性代数之——复数矩阵
  • 原文地址:https://www.cnblogs.com/yonguo123/p/9598378.html
Copyright © 2011-2022 走看看