欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python GAE、Django導(dǎo)出Excel的方法

 更新時(shí)間:2008年11月24日 20:41:34   作者:  
在Python中操作Excel的方法可以通過COM,最常用的跨平臺(tái)的方法是使用pyExcelerator,pyExcelerator的使用方法可以參考limodou的《使用pyExcelerator來讀寫Excel文件》。
但GAE、Django并沒有直接將pyExcelerator導(dǎo)出為Excel的方法。我的思路是先用把數(shù)據(jù)導(dǎo)入到Workbook和Worksheet中,如果存為文件可以直接調(diào)用Workbook的save方法,但GAE不支持本地文件操作,即使圖片也只能存放在DataStore中,但我們可以類似于返回圖片的方法,直接將Excel的二進(jìn)制流返回給瀏覽器。這就需要修改一下Workbook的代碼,加入返回二進(jìn)制流的方法,我給他取的名字是savestream,在savestream中再次調(diào)用CompoundDoc.XlsDoc的savestream方法,也是自己增加的。代碼如下:
Workbook的savestream:
復(fù)制代碼 代碼如下:

def savestream(self):
import CompoundDoc
doc = CompoundDoc.XlsDoc()
return doc.savestream(self.get_biff_data())

CompoundDoc.XlsDoc的savestream方法:
復(fù)制代碼 代碼如下:

def savestream(self, stream):
# 1. Align stream on 0x1000 boundary (and therefore on sector boundary)
padding = '\x00' * (0x1000 - (len(stream) % 0x1000))
self.book_stream_len = len(stream) + len(padding)
self.__build_directory()
self.__build_sat()
self.__build_header()
s = ""
s = s + str(self.header)
s = s + str(self.packed_MSAT_1st)
s = s + str(stream)
s = s + str(padding)
s = s + str(self.packed_MSAT_2nd)
s = s + str(self.packed_SAT)
s = s + str(self.dir_stream)
return s

這樣就可以返回Excel文件的二進(jìn)制流了,下面就是如何在用戶請(qǐng)求的時(shí)候?qū)xcel文件返回,我借鑒了PHP的實(shí)現(xiàn)方法,代碼如下:
復(fù)制代碼 代碼如下:

class Main(webapp.RequestHandler):
def get(self):
self.sess = session.Session()
t_values['user_id'] = self.sess['userid']
if self.request.get('export') == 'excel':
wb = Workbook()
ws = wb.add_sheet(u'統(tǒng)計(jì)報(bào)表')
#表頭
font0 = Font()
font0.bold = True
font0.height = 12*20;
styletitle = XFStyle()
styletitle.font = font0
ws.write(0, 0, u"日期:"+begintime.strftime('%Y-%m-%d') + " - " + endtime.strftime('%Y-%m-%d'), styletitle)
#返回Excel文件
self.response.headers['Content-Type'] = "application/vnd.ms-execl"
self.response.headers['Content-Disposition'] = str("attachment; filename=%s.xls"%t_values['user_id'])
self.response.headers['Pragma'] = "no-cache"
self.response.headers['Expires'] = "0"
self.response.out.write(wb.savestream())
return

效果可以參見我愛記賬網(wǎng)的excel報(bào)表。

相關(guān)文章

  • Python集合add()函數(shù)使用詳解

    Python集合add()函數(shù)使用詳解

    python中add()方法用于給集合添加元素,如果添加的元素在集合中已存在,則不執(zhí)行任何操作,本文將給大家介紹一下Python集合add()函數(shù)使用方法,感興趣的小伙伴跟著小編一起來看看吧
    2023-07-07
  • Python內(nèi)置函數(shù)locals和globals對(duì)比

    Python內(nèi)置函數(shù)locals和globals對(duì)比

    這篇文章主要介紹了Python內(nèi)置函數(shù)locals和globals對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • python 讀取視頻,處理后,實(shí)時(shí)計(jì)算幀數(shù)fps的方法

    python 讀取視頻,處理后,實(shí)時(shí)計(jì)算幀數(shù)fps的方法

    今天小編就為大家分享一篇python 讀取視頻,處理后,實(shí)時(shí)計(jì)算幀數(shù)fps的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 利用PyTorch實(shí)現(xiàn)VGG16教程

    利用PyTorch實(shí)現(xiàn)VGG16教程

    這篇文章主要介紹了利用PyTorch實(shí)現(xiàn)VGG16教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python列表元素刪除和remove()方法詳解

    Python列表元素刪除和remove()方法詳解

    這篇文章主要給大家介紹了關(guān)于Python列表元素刪除和remove()方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python常用內(nèi)置函數(shù)和關(guān)鍵字使用詳解

    Python常用內(nèi)置函數(shù)和關(guān)鍵字使用詳解

    在Python中有許許多多的內(nèi)置函數(shù)和關(guān)鍵字,它們是我們?nèi)粘V薪?jīng)??梢允褂玫牡降囊恍┗A(chǔ)的工具,可以方便我們的工作。本文將詳細(xì)講解他們的使用方法,需要的可以參考一下
    2022-05-05
  • python中正則的使用指南

    python中正則的使用指南

    正則表達(dá)式(RE)是一種小型的、高度專業(yè)化的編程語言,它內(nèi)嵌在Python中,并通過re模塊實(shí)現(xiàn)。下面我們就來詳細(xì)探討下Python中正則表達(dá)式的使用
    2016-12-12
  • 詳解設(shè)計(jì)模式中的工廠方法模式在Python程序中的運(yùn)用

    詳解設(shè)計(jì)模式中的工廠方法模式在Python程序中的運(yùn)用

    這篇文章主要介紹了設(shè)計(jì)模式中的工廠方法模式在Python程序中的運(yùn)用,工廠方法模式主張程序在設(shè)計(jì)時(shí)要可以根據(jù)不同的條件生成各種類的實(shí)例,需要的朋友可以參考下
    2016-03-03
  • 深入淺析Python代碼規(guī)范性檢測(cè)

    深入淺析Python代碼規(guī)范性檢測(cè)

    這篇文章主要介紹了Python代碼規(guī)范性檢測(cè),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • django模板結(jié)構(gòu)優(yōu)化的方法

    django模板結(jié)構(gòu)優(yōu)化的方法

    這篇文章主要介紹了django模板結(jié)構(gòu)優(yōu)化的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02

最新評(píng)論