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
模闆文法(圖檔來至網絡)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5COyADMxATO0IjMxkjM0MDMzYzXzEzN0YTMyIzLchDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)