標籤:方法 返回 標題 .property 匯出 style 資料匯出 注意 建議
在實際開發中,我們有時會遇到資料匯出的需求。一般的,匯出的檔案格式為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 = 231 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 += 135 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,返回最終的路徑。
Python項目開發公用方法--excel產生方法