ホームページ >バックエンド開発 >Python チュートリアル >Python GAE と Django を使用して Excel をエクスポートする方法

Python GAE と Django を使用して Excel をエクスポートする方法

WBOY
WBOYオリジナル
2016-06-16 08:47:281471ブラウズ

ただし、GAE と Django は pyExcelerator を Excel に直接エクスポートしません。私の考えは、まずデータをワークブックとワークシートにインポートし、ファイルとして保存する場合は、ワークブックの保存メソッドを直接呼び出すことができます。ただし、GAE はローカル ファイル操作をサポートしていません。写真を返す方法では、Excel のバイナリ ストリームをブラウザに直接返します。これには、ワークブックのコードを変更し、バイナリ ストリームを返すメソッドを追加する必要があります。これに savestream という名前を付け、savestream で CompoundDoc.XlsDoc の savestream メソッドを再度呼び出しました。これも自分で追加しました。コードは次のとおりです。
ワークブックのセーブストリーム:

コードをコピー コードは次のとおりです:

def savestream( self):
import CompoundDoc
doc = CompoundDoc. 🎜>

コードをコピー
コードは次のとおりです:
def savestream(self, stream): # 1. ストリームを 0x1000 境界 (したがってセクター境界) に位置合わせします padding = 'x00' * (0x1000 - (len(stream) % 0x1000)) self .book_stream_len = len(ストリーム) + len(パディング) 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 ファイルのバイナリ ストリーム。ユーザーが要求したときに Excel ファイルを返す方法は次のとおりです。



コードをコピーします。 >
コードは次のとおりです:

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'統計レポート')
#Header
font0 = Font()
font0.bold = True
font0.height = 12*20;
styletitle = XFSt​​yle()
styletitle.font = font0
ws.write(0, 0, u"Date:"+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'] = "キャッシュなし"
self.response.headers['Expires'] = "0"
self.response.out.write(wb.savestream())
return


この効果は次のとおりです。 Ii Accounting Network の Excel レポートで確認できます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。