日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python基于openpyxl生成excel文件

瀏覽:30日期:2022-07-01 13:20:09

項目需要,需要自動生成PDF測試報告。經過對比之后,選擇使用了reportlab模塊。 項目背景:開發一個測試平臺,供測試維護測試用例,執行測試用例,并且生成測試報告(包含PDF和excel),將生成的測試報告以郵件的形式發送相關人。

excel生成代碼如下:

from openpyxl import load_workbookfrom openpyxl.styles import Font, Alignment, Side, Borderimport shutil# 生成測試計劃的excel文件class GenerateCaseExcel(object): def __init__(self, file_name): self.file_name = file_name self.file_path = ’/xxx/xxx/xxx/’ self.font_title = Font(name=u'宋體', size=12, bold=True) self.font_body = Font(name=u'宋體', size=10) self.alignment_center = Alignment(horizontal=’center’, vertical=’center’, wrap_text=True) self.alignment_left = Alignment(horizontal=’left’, vertical=’center’, wrap_text=True) self.thin = Side(border_style='thin') self.border = Border(top=self.thin, left=self.thin, right=self.thin, bottom=self.thin) def generateExcel(self, basic_data, case_set_list, case_data_info): shutil.copy(u’/xxx/xxx/xxx/測試用例模板.xlsx’, self.file_path + self.file_name + ’.xlsx’) wb = load_workbook(self.file_path + self.file_name + ’.xlsx’) # 綜合評估頁面 ws_first = wb.worksheets[0] ws_first.cell(2, 2).value = basic_data[’project_name’] ws_first.cell(2, 4).value = basic_data[’report_code’] ws_first.cell(2, 6).value = basic_data[’report_date’] ws_first.cell(3, 2).value = basic_data[’task_id’] ws_first.cell(3, 4).value = basic_data[’task_name’] ws_first.cell(3, 6).value = basic_data[’task_owner’] ws_first.cell(4, 2).value = basic_data[’task_priority’] ws_first.cell(4, 4).value = basic_data[’task_status’] ws_first.cell(4, 6).value = basic_data[’task_module’] ws_first.cell(5, 2).value = basic_data[’app_version’] ws_first.cell(5, 4).value = basic_data[’product_id’] ws_first.cell(5, 6).value = basic_data[’device_id’] ws_first.cell(6, 2).value = basic_data[’firmware_key’] ws_first.cell(6, 4).value = basic_data[’firmware_version’] ws_first.cell(6, 6).value = basic_data[’mcu_version’] ws_first.cell(7, 2).value = basic_data[’gateway_version’] ws_first.cell(7, 4).value = basic_data[’chip_module’] ws_first.cell(8, 2).value = basic_data[’task_result’] ws_first.cell(9, 2).value = basic_data[’note’] ws_first.cell(10, 2).value = basic_data[’router’] ws_first.cell(11, 2).value = basic_data[’test_mobile’] for i in range(8, 12): for j in range(2, 7):ws_first.cell(i, j).border = self.border # 動態生成測試任務用例集信息 if len(case_set_list) > 0: # 合并單元格處理 merge_num = int(11) + len(case_set_list) ws_first.merge_cells('A12:A' + str(merge_num)) ws_first.cell(12, 1, value='測試流程') ws_first.cell(12, 1).alignment = self.alignment_center ws_first.cell(merge_num, 1).border = self.border for i in range(len(case_set_list)):cur_row = int(12) + iws_first.cell(12 + i, 2, value='用例集名稱')ws_first.cell(12 + i, 2).alignment = self.alignment_centerws_first.cell(12 + i, 2).border = self.borderws_first.merge_cells('C' + str(cur_row) + ':D' + str(cur_row))ws_first.cell(12 + i, 3, value=case_set_list[i][’set_name’])ws_first.cell(12 + i, 3).alignment = self.alignment_centerws_first.cell(12 + i, 3).border = self.borderws_first.cell(12 + i, 4).border = self.borderws_first.cell(12 + i, 5, value='用例負責人')ws_first.cell(12 + i, 5).alignment = self.alignment_centerws_first.cell(12 + i, 5).border = self.borderws_first.cell(12 + i, 6, value=case_set_list[i][’set_owner’])ws_first.cell(12 + i, 6).alignment = self.alignment_centerws_first.cell(12 + i, 6).border = self.border # 測試用例集用例詳細信息 fields = 'case_id,case_module,case_priority,case_tags,case_name,case_step,expect_result,case_operator,real_result,note'.split(',') CASE_FIELD_LENGHT = 10 CASE_FIELD_DES = ['用例編號', '模塊', '優先級', '標簽', '標題', '測試步驟', '期望結果', '執行人', '實際結果', '備注'] COLUMN_DES = {1: ’A’, 2: ’B’, 3: ’C’, 4: ’D’, 5: ’E’, 6: ’F’, 7: ’G’, 8: ’H’, 9: ’I’, 10: ’J’} if len(case_set_list) > 0: for i in range(len(case_set_list)):# title需要是unicode類型ws_name = wb.create_sheet(title=case_set_list[i][’set_name’])# 用例第一行初始化for j in range(CASE_FIELD_LENGHT): ws_name.cell(1, j + 1, value=CASE_FIELD_DES[j]) if j == 3 or j == 4 or j == 5 or j == 6 or j == 9: ws_name.column_dimensions[COLUMN_DES[j + 1]].width = 35 else: ws_name.column_dimensions[COLUMN_DES[j + 1]].width = 10 ws_name.cell(1, j + 1).font = self.font_title ws_name.cell(1, j + 1).alignment = self.alignment_center ws_name.cell(1, j + 1).border = self.border ws_name.row_dimensions[1].height = 30if case_set_list[i][’set_name’] in case_data_info.keys() and len(case_data_info[case_set_list[i][’set_name’]]) > 0: self.generateTableData(ws_name, case_data_info[case_set_list[i][’set_name’]], fields) wb.save(filename=self.file_path + self.file_name + ’.xlsx’) wb.close() # 生成table規則數據 def generateTableData(self, sheet_name, data_list, fields): row_index = 2 for data in data_list: col_index = 1 for title in fields:sheet_name.cell(row=row_index, column=col_index, value=data[title])sheet_name.cell(row=row_index, column=col_index).border = self.bordersheet_name.cell(row=row_index, column=col_index).font = self.font_bodysheet_name.row_dimensions[row_index].height = 25if col_index == 5 or col_index == 6 or col_index == 7 or col_index == 10: sheet_name.cell(row=row_index, column=col_index).alignment = self.alignment_leftelse: sheet_name.cell(row=row_index, column=col_index).alignment = self.alignment_centercol_index += 1 row_index += 1

生成效果:

python基于openpyxl生成excel文件

python基于openpyxl生成excel文件

以上就是python基于openpyxl生成excel文件的詳細內容,更多關于python 生成excel文件的資料請關注好吧啦網其它相關文章!

標簽: python
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久不卡日韩美女| 日本在线成人| 国产精品天天看天天狠| 在线精品一区| 亚洲综合日韩| 一本一本久久| 亚洲综合欧美| 亚洲欧洲日韩| 日欧美一区二区| 日本亚洲最大的色成网站www| 国产美女精品| 亚洲1区在线| 国产精品视频一区二区三区综合 | 亚洲日韩中文字幕一区| 视频一区视频二区中文字幕| 美女精品在线| 日本强好片久久久久久aaa| 国产乱人伦精品一区| 久久伊人国产| 啪啪国产精品| 亚洲综合婷婷| 日本久久综合| 亚洲一区亚洲| 久久国产人妖系列| 日韩精品欧美激情一区二区| 欧美在线网站| 国产欧美综合一区二区三区| 成人精品久久| 综合激情网...| 久久av免费看| 好看的av在线不卡观看| 日韩国产精品久久久| 日韩1区2区| 少妇精品久久久一区二区三区| 免费精品一区| 日韩一区精品字幕| 精品欧美视频| 日本一区中文字幕| 亚洲国内精品| 国产96在线亚洲| 亚洲伊人影院| 国产精品久久观看| 日韩毛片一区| 性欧美69xoxoxoxo| 粉嫩av一区二区三区四区五区| av成人国产| 视频福利一区| 精品国产三区在线| 国产精品一区免费在线| 老色鬼久久亚洲一区二区| 欧美日韩国产v| 久久一区精品| 国产免费播放一区二区| 亚洲精品激情| 亚洲三级网站| 免费一区二区视频| 伊伊综合在线| 韩日一区二区| 精品中文字幕一区二区三区| 18国产精品| 日本a口亚洲| 亚洲精品乱码日韩| 免费在线观看日韩欧美| 亚洲欧美激情诱惑| 久久精品播放| 激情久久久久久| 久久精品国产99久久| 色综合www| 午夜影院欧美| 中文一区一区三区免费在线观 | 日韩极品在线观看| 亚洲精品高潮| 久久国内精品自在自线400部| 亚洲2区在线| 欧美国产日韩电影| 麻豆国产精品777777在线| 麻豆成人av在线| 四虎884aa成人精品最新| 丝袜美腿诱惑一区二区三区| 美女一区网站| 国产模特精品视频久久久久| 日本欧美在线看| 亚洲免费网址| 国产视频一区二| 精品久久不卡| 亚洲国产专区校园欧美| 亚洲色图国产| 久草精品视频| 欧美女激情福利| 国产欧美一区二区三区精品观看 | 日韩精品一级中文字幕精品视频免费观看 | 国产精品最新| 日韩精品网站| 久久国内精品视频| 欧美一级鲁丝片| 91精品1区| 视频一区二区欧美| 美女精品网站| 国产女人18毛片水真多18精品| 欧美一区二区三区久久| 麻豆成人av在线| 亚洲五月婷婷| 91成人精品在线| 野花国产精品入口| 欧美片网站免费| 精品捆绑调教一区二区三区 | 久久69成人| 亚洲高清影视| 日韩黄色av| 91精品综合| 国产欧美69| 亚洲欧美日本日韩| 免费av一区| 亚洲人成在线影院| 黄色在线观看www| 免费人成在线不卡| 日韩综合在线| 97久久超碰| 欧美在线亚洲综合一区| 国产激情精品一区二区三区| 一区二区日韩免费看| 国产精品专区免费| 国产乱人伦丫前精品视频| 不卡中文一二三区| 9999国产精品| 国产精品2023| 亚洲综合不卡| 日韩美女一区二区三区在线观看| 国际精品欧美精品| 国产日韩中文在线中文字幕| 野花国产精品入口| 欧美一区三区| 电影91久久久| 国产亚洲精品美女久久| 日本大胆欧美人术艺术动态| 97精品国产一区二区三区| 国产伦精品一区二区三区千人斩 | 欧美日韩中文| 亚洲三级视频| 综合一区av| 免费欧美在线视频| 欧美福利在线| 欧美特黄一区| 尤物在线精品| 综合激情网...| 亚洲视频二区| 中文在线日韩| 日韩免费精品| 日欧美一区二区| 青青青国产精品| 综合一区av| 一区二区三区午夜视频| 综合亚洲视频| 欧美一区免费| а√天堂8资源中文在线| 伊人久久亚洲热| 日韩免费看片| 日韩精品视频中文字幕| 欧美综合国产| 久久精品国产www456c0m| 中文字幕一区二区精品区| 亚洲精品黄色| 国产极品嫩模在线观看91精品| 老司机精品在线| 久久激情网站| 免费观看久久av| 亚洲电影在线| 久久精品97| 特黄毛片在线观看| 中文字幕一区二区三区日韩精品| 国产日韩欧美一区二区三区 | 国产一区二区高清| 国产精品欧美大片| 国产一区二区三区四区| 久久亚洲国产精品尤物| 久久久蜜桃一区二区人| 日韩一区精品视频| 精品久久久网| 综合日韩在线| 久久久天天操| 国产毛片精品| 影音国产精品| 精品久久久网| 一区二区三区四区日韩| а√天堂8资源中文在线| 免费在线日韩av| 蜜桃久久久久久| 天堂中文在线播放| 国产精品欧美三级在线观看| 日韩成人三级| 国产精品一级| 国产精选一区| 亚洲美女久久| 亚洲成人精品| 成人亚洲精品| 国产精品亚洲四区在线观看 | 久久男人天堂| 中文在线а√在线8| 亚洲性色视频| 国产精品99久久免费|