feat: base 增加docxtpl导出函数

This commit is contained in:
caoqianming 2023-10-30 09:50:02 +08:00
parent b5bfa37706
commit 9c37de9ffb
2 changed files with 25 additions and 4 deletions

View File

@ -6,6 +6,23 @@ from datetime import datetime
from openpyxl import Workbook, styles from openpyxl import Workbook, styles
from openpyxl.drawing.image import Image from openpyxl.drawing.image import Image
from openpyxl.utils import get_column_letter, column_index_from_string from openpyxl.utils import get_column_letter, column_index_from_string
from docxtpl import DocxTemplate
def export_docx(template_path: str, context_data: dict, file_name: str):
"""
Word导出
:param template_path: 模板路径
:param context_data: 数据
:param file_name: 保存的文件名
:return:返回文件路径
"""
docx = DocxTemplate(settings.BASE_DIR + template_path)
docx.render(context_data)
file_path = f'/media/temp/{file_name}'
save_path = settings.BASE_DIR + file_path
docx.save(save_path)
return file_path
def len_byte(value): def len_byte(value):
@ -26,7 +43,8 @@ def export_excel(field_data: list, data: list, FileName: str):
:return:返回文件的下载url完整路径 :return:返回文件的下载url完整路径
""" """
wbk = xlwt.Workbook(encoding='utf-8') wbk = xlwt.Workbook(encoding='utf-8')
sheet = wbk.add_sheet('Sheet1', cell_overwrite_ok=True) # 第二参数用于确认同一个cell单元是否可以重设值。 # 第二参数用于确认同一个cell单元是否可以重设值。
sheet = wbk.add_sheet('Sheet1', cell_overwrite_ok=True)
style = xlwt.XFStyle() # 赋值style为XFStyle(),初始化样式 style = xlwt.XFStyle() # 赋值style为XFStyle(),初始化样式
# 设置居中 # 设置居中
wbk.set_colour_RGB(0x23, 0, 60, 139) wbk.set_colour_RGB(0x23, 0, 60, 139)
@ -62,7 +80,8 @@ def export_excel(field_data: list, data: list, FileName: str):
style.font = tab_fnt # 设置单元格内字体样式 style.font = tab_fnt # 设置单元格内字体样式
style.borders = tab_borders style.borders = tab_borders
for index, ele in enumerate(field_data): for index, ele in enumerate(field_data):
sheet.write_merge(0, 0, index, index, ele, style) # (列开始, 列结束, 行开始, 行结束, '数据内容') # (列开始, 列结束, 行开始, 行结束, '数据内容')
sheet.write_merge(0, 0, index, index, ele, style)
# 确定栏位宽度 # 确定栏位宽度
col_width = [] col_width = []
@ -147,7 +166,7 @@ def export_excel_img(field_data: list, data: list, FileName: str):
img.width, img.height = (90, 90) img.width, img.height = (90, 90)
imgs.append((img, field_data[i2]['letter'] + str(i1+2))) imgs.append((img, field_data[i2]['letter'] + str(i1+2)))
except: # 这里先不做处理 except: # 这里先不做处理
pass pass
else: else:
cell.value = v2 cell.value = v2
@ -155,7 +174,7 @@ def export_excel_img(field_data: list, data: list, FileName: str):
ws.add_image(i[0], i[1]) ws.add_image(i[0], i[1])
FileNameF = FileName + datetime.now().strftime('%Y%m%d%H%M%S') + '.xlsx' FileNameF = FileName + datetime.now().strftime('%Y%m%d%H%M%S') + '.xlsx'
path = '/temp/' path = '/media/temp/'
pathRoot = settings.BASE_DIR + path pathRoot = settings.BASE_DIR + path
if not os.path.exists(pathRoot): if not os.path.exists(pathRoot):
os.makedirs(pathRoot) os.makedirs(pathRoot)

View File

@ -18,3 +18,5 @@ requests==2.28.1
xlwt==1.3.0 xlwt==1.3.0
openpyxl==3.1.0 openpyxl==3.1.0
cron-descriptor==1.2.35 cron-descriptor==1.2.35
docxtpl==0.16.7
# deepface==0.0.79