python這個庫很有用,可以格式化生成報告等。
其他內容請點此處,下面只寫docxtpl的功能代碼。
# coding: utf-8 import web # 我們用的webpy框架 import StringIO form docxtpl import DocxTemplate def doctest(): tpl = DocxTemplate('E:/safe.docx') # 讀取docx模板,注意:需要提前設置好模板,下面會介紹 tpl = DocxTemplate('/home/sysadm/shell/usm/usm_tk_online2/usm/www/safetytrain/safe.docx') # 將文件流返回 web.header('Content-type', 'aapplication/msword') # 指定返回類型 web.header('Transfer-Encoding', 'chunked') web.header('Content-Disposition', 'attachment;filename={0}'.format('名稱' + '.doc')) list_docx = [] # 將需要寫道doc的內容都放到list_docx列表里面 list_docx.append({'personname':"personname","companyname":"companyname","division":"division"}) datetody = str(datetime.date.today()) # 用來給doc名稱動態顯示時間 list_docx_x, list_docx_y = divmod(len(list_docx), 35) # 生產doc文檔的頁數 if list_docx_y != 0: list_docx_count = list_docx_x + 1 else: list_docx_count = list_docx_x list_docx_de = [] page_s = [] for i in range(list_docx_count): page_s.append(i+1) for i in range(list_docx_count): if i == list_docx_count - 1: li_c = list_docx[(i)*35:] else: li_c = list_docx[(i)*35: (i)*35 + 35] list_docx_de.append(li_c) ret = {"page":list_docx_count,"datetody":datetody, "total": list_docx_de} # 在doc里面對ret進行取值 # 以下都是固定寫法 tpl.render(ret) sio = StringIO.StringIO() # 將文件保存為string流 tpl.save(sio) # 將光標移到開頭 sio.seek(0) # 會在瀏覽器顯示下載特效 return sio.getvalue()
模板語法(圖片來至網絡)