# 根据数据生成excel文件
@classmethod
def rows_to_xls(cls, order_rows):
filename = '%s_%s.xls' % (datetime.datetime.now().strftime("%Y%m%d"), cls.generate_random_str())
filepath = '%s/%s' % (_updir, filename) # _updir就是文件的存放路径
book = xlwt.Workbook(encoding="utf-8")
sheet1 = book.add_sheet("Sheet 1")
for i, val in enumerate(cls.csv_headline()):
# (行,列,值)
sheet1.write(0, i, val)
for i, order_row in enumerate(order_rows):
utf8_line = cls.order_line(order_row)
for j, val in enumerate(utf8_line):
sheet1.write(i+1, j, val)
book.save(filepath)
return filename
將檔案流輸出,當使用者點擊下載時,輸出的Content-Type為application/ms-excel,可以參考這篇文章連結描述
我是這麼實現的,前台頁面對導出按鈕增加click事件,點擊後使用ajax發送資料到對應url,用xlrd生成並保存xlxs到伺服器指定路徑下,最後返回檔名(filename),前台點擊下載按鈕即可下載到本機。
前台頁:
服務端:
model層: