2011-08-31 2 views
0

Comment puis-je stocker le fichier Excel créé en utilisant pyExcelerator comme entrée pour db.BlobProperty()? Ce qui est nécessaire, c'est que l'utilisation du programme taskqueue crée un fichier Excel et le stocke dans le magasin de données. Et enverra un lien aux utilisateurs pour télécharger le fichier. Comment puis-je faire cela ? S'il vous plaît aidez-moiComment puis-je stocker le fichier Excel créé en utilisant pyExcelerator comme entrée pour db.BlobProperty()

dataModel:

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

code Python pour stocker le fichier Excel dans datastore

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() 

Après avoir inséré nouveau fichier, la taille du fichier dans 0kb pourquoi?

+0

Vous n'avez probablement pas besoin de le télécharger car vous l'avez comme w. Finalement, faites-en un self.w, afin de le voir de partout dans votre programme. – Louis

+0

@Louis Ce dont j'ai besoin, c'est qu'utiliser le programme taskqueue créera un fichier Excel et le stockera dans le magasin de données. Et enverra un lien aux utilisateurs pour télécharger le fichier. Comment puis-je faire cela ? Aidez-moi, s'il vous plaît –

Répondre

1

Si votre objectif est de créer un fichier Excel et de l'enregistrer sous forme de blob pour une utilisation ultérieure, vous devez d'abord l'enregistrer en tant qu'objet StringIO, et non construire une réponse, comme vous le faites actuellement.

Voici un échantillon en utilisant xlwt (une fourchette de 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) 
0

Ce code enregistre le fichier en tant que BlobProperty() dans datastore.

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() 
Questions connexes