簡體   English   中英

我如何存儲使用pyExcelerator創建的Excel文件作為db.BlobProperty()的輸入

[英]How can i store excel file created using pyExcelerator as input for db.BlobProperty()

我如何存儲使用pyExcelerator創建的excel文件作為db.BlobProperty()的輸入?

實際上,我需要的是使用Taskqueue程序將創建一個excel文件並將其存儲在數據存儲區中。 並將向用戶發送鏈接以下載文件。 我該怎么做呢 ? 請幫我

資料模型:

class filestore(db.Model):
   stock_file = db.BlobProperty()

用於將Excel文件存儲在數據存儲區中的Python代碼

from pyExcelerator import *
class MainHandler(webapp.RequestHandler):
  def get(self):                  
     w = Workbook()
     ws = w.add_sheet('Hey, Dude')
     ws.write(0, 0, 'Part Number')        
     self.response.headers['Content-Type'] = 'application/ms-excel'
     self.response.headers['Content-Transfer-Encoding'] = 'Binary'
     self.response.headers['Content-disposition'] = 'attachment; filename="Test.xls"'

     temp_file = filestore()
     temp_file.stock_file = db.blob(wb.save(self.response.out)) // Storing 0kb file 
     temp_file.put()

插入新文件后,為什么文件大小為0kb?

如果您的目標是創建一個Excel文件並將其另存為Blob供以后使用,則需要先將其另存為StringIO對象,而不是像現在那樣構造一個響應。

這是使用xlwt(pyExcelerator的一個分支)的示例:

import xlwt

file_type = 'application/ms-excel'
file_name = 'sample.xls'

wbk = xlwt.Workbook()
sheet = wbk.add_sheet('Hey, Dude')
sheet.write(0, 0, 'Part Number')

file = StringIO.StringIO()
wbk.save(file)
file.seek(0)    

with files.open(file_name, 'a') as f:
  f.write('%s' % file.getvalue())

files.finalize(file_name)

blob_key = files.blobstore.get_blob_key(file_name)

此代碼會將文件另存為數據存儲中的blobproperty()。

    import StringIO

    w = Workbook()
    ws = w.add_sheet('Hey, Dude')
    ws.write(0, 0, 'Part Number')

    buffer = StringIO.StringIO()
    w.save(buffer)
    contents = buffer.getvalue()
    mymodel = filestore()
    mymodel.stock_file = db.Blob(contents)
    mymodel.put()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM