| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | 
							- import xlwt
 
- class ReportFileUtils:
 
-     def __init__(self):
 
-         self.styleOK = xlwt.easyxf()
 
-         self.default_style = self.set_style('Times New Roman',
 
-                        200,
 
-                        bold=False,
 
-                        format_str='', align='')
 
-     pass
 
-     def set_style(self, name, height, bold=False, format_str='', align='center'):
 
-         style = xlwt.XFStyle()  # 初始化样式
 
-         font = xlwt.Font()  # 为样式创建字体
 
-         font.name = name  # 'Times New Roman'
 
-         font.bold = bold
 
-         font.height = height
 
-         borders = xlwt.Borders()  # 为样式创建边框
 
-         borders.left = 2
 
-         borders.right = 2
 
-         borders.top = 0
 
-         borders.bottom = 2
 
-         alignment = xlwt.Alignment()  # 设置排列
 
-         if align == 'center':
 
-             alignment.horz = xlwt.Alignment.HORZ_CENTER
 
-             alignment.vert = xlwt.Alignment.VERT_CENTER
 
-         else:
 
-             alignment.horz = xlwt.Alignment.HORZ_LEFT
 
-             alignment.vert = xlwt.Alignment.VERT_BOTTOM
 
-         style.font = font
 
-         style.borders = borders
 
-         style.num_format_str = format_str
 
-         style.alignment = alignment
 
-         return style
 
-     def horizontal_cell_merge(self, ws, start_row, end_row, start_col, end_col, content):
 
-         """
 
-             横向单元格合并
 
-         :param ws:
 
-         :param start_row:
 
-         :param end_row:
 
-         :param start_col:
 
-         :param end_col:
 
-         :param content:
 
-         :return:
 
-         """
 
-         ws.write_merge(
 
-             start_row,
 
-             end_row,
 
-             start_col,
 
-             end_col,
 
-             content,
 
-             self.set_style(
 
-                 'Times New Roman',
 
-                 320,
 
-                 bold=True,
 
-                 format_str=''))
 
-     def horizontal_space_cells(self, ws, start_row, end_row, start_col, end_col):
 
-         self.horizontal_cell_merge(ws, start_row, end_row, start_col, end_col, '')
 
-     def vertical_cell_merge(self, ws, start_row, end_row, start_col, end_col, content):
 
-         """
 
-             纵向单元格合并
 
-         :param ws:
 
-         :param start_row:
 
-         :param rows:
 
-         :param start_col:
 
-         :param end_col:
 
-         :param content:
 
-         :return:
 
-         """
 
-         ws.write_merge(
 
-             start_row,
 
-             end_row,
 
-             start_col,
 
-             end_col,
 
-             content,
 
-             self.set_style(
 
-                 'Times New Roman',
 
-                 320,
 
-                 bold=True,
 
-                 format_str=''))  # 合并单元格
 
-     def insert_cells(self, ws, data, start_row, start_col, end_col):
 
-         for index, v in enumerate(data):
 
-             y = 0
 
-             for col in range(start_col, end_col):
 
-                 value = v[y]
 
-                 if value is None:
 
-                     value = 0
 
-                 ws.col(col).width = 150 * 30  # 定义列宽
 
-                 ws.write(start_row, col, str(value),
 
-                          style=self.default_style)
 
-                 y += 1
 
-             start_row += 1
 
-     def horizontal_space_cells(self, ws, start_row, end_row, start_col, end_col):
 
-         """
 
-             空白占位
 
-         :param ws:
 
-         :param start_row:
 
-         :param end_row:
 
-         :param start_col:
 
-         :param end_col:
 
-         :return:
 
-         """
 
-         self.horizontal_cell_merge(ws, start_row, end_row, start_col, end_col, '')
 
-     def create_excel_file(self, data, sheet_names, title, headers, save_path):
 
-         """
 
-             生成excel文件, data, sheet_names,headers 三者在数量上要对应
 
-         :param data: 数据
 
-         :param sheet_names: 工作簿名称
 
-         :param title: 文件名称
 
-         :param headers: 每个工作簿表头
 
-         :return:
 
-         """
 
-         self.wb = xlwt.Workbook()
 
-         for index, d in enumerate(data):
 
-             # 创建工作簿
 
-             sheet_name = sheet_names[index]
 
-             header = headers[index]
 
-             ws = self.wb.add_sheet(sheet_name, cell_overwrite_ok=True)
 
-             # 区域
 
-             start_row = 0
 
-             # 写入标题
 
-             self.horizontal_cell_merge(ws, start_row, start_row, 0, len(header) - 1, sheet_name)
 
-             start_row += 1
 
-             # 写入表头
 
-             self.insert_cells(ws, [headers[index]], start_row, 0, len(header))
 
-             # start_row += 1
 
-             # city_info = {}
 
-             # insert_data = []
 
-             # region_info = {}
 
-             # data_size = 0
 
-             # for key in d.keys():
 
-             #     region_rows = 0
 
-             #     value = d.get(key)
 
-             #     region_name = key
 
-             #     # 城市
 
-             #     for key_1 in value.keys():
 
-             #         value_1 = value.get(key_1)
 
-             #         city_name = key_1
 
-             #         region_rows += len(value_1)
 
-             #         insert_data.extend(value_1)
 
-             #         city_info[city_name] = len(value_1)
 
-             #         data_size = len(value_1[0])
 
-             #     region_info[region_name] = region_rows
 
-             # # 合并区域
 
-             # for key in region_info.keys():
 
-             #     print(key)
 
-             #     self.vertical_cell_merge(ws, start_row, start_row + region_info.get(key) - 1, 0, 0, key)
 
-             #     start_row += region_info.get(key)
 
-             # # 城市合并
 
-             # start_row = 2
 
-             # for key in city_info.keys():
 
-             #      self.vertical_cell_merge(ws, start_row, start_row + city_info.get(key) - 1, 1, 1, key)
 
-             #      start_row += city_info.get(key)
 
-             # 写入数据
 
-             start_row = 2
 
-             self.insert_cells(ws, d, start_row, 0, len(d[0]))
 
-         self.wb.save(save_path + '/' + title)
 
- if __name__ == '__main__':
 
-     rf = ReportFileUtils()
 
-     data = [
 
-                 [[1, 2, 3, 5, 6, 7, 8, 9, 1]],
 
-                 [[1, 2, 3, 5, 6, 7, 8, 9, 1]],
 
-                 [[1, 2, 3, 5, 6, 7, 8, 9, 1]]
 
-         ]
 
-     sheet_names = ['前一日数据', '本月数据', '上线后所有']
 
-     title = "测ss试.xlsx"
 
-     headers = [['区域', '城市', '项目名称', '推荐人id', '姓名', '手机号', '火电', '注册', '宝贝'],
 
-                ['区域', '城市', '项目名称', '推荐人id', '姓名', '手机号', '火电', '注册', '宝贝'],
 
-                ['区域', '城市', '项目名称', '推荐人id', '姓名', '手机号', '火电', '注册', '宝贝']]
 
-     rf.create_excel_file(data, sheet_names, title, headers, r'D:\elab\elab_mvp\test')
 
 
  |