2016-04-20 3 views
1

Ich möchte einige Excel-Datei in meinem Speicher exportieren, und hier ist mein Code.Django: Exportieren von Excel-Dateien in meinem Speicher

wrapper = open('/home/filename.xlsx') 
response = HttpResponse(wrapper,content_type='application/force-download') 
response['Content-Disposition'] = 'attachment ; filename=%s' % smart_str('filename.xlsx') 
response['X-Sendfile'] = smart_str('/home/filename.xlsx') 
     return response 

Es gibt kein Problem, wenn ich Python 2.7, aber wenn ich Python 3.5 kommt es Fehler

'utf-8' codec can't decode byte 0x9c in position 10:invalid start byte 

ich den Fehler erraten wegen ihrer Differenz ist (open-Funktion)

Was ist der geeignete Weg, Excel-Datei in meinem Speicher zu öffnen und zu exportieren?

Antwort

1

In Python 3.x-Dateien werden standardmäßig im Textmodus geöffnet. Ändern Sie Ihre erste Zeile:

wrapper = open('/home/filename.xlsx', 'rb') 

Von Python 3 documentation (Hervorhebung von mir):

Normalerweise werden die Dateien im Textmodus geöffnet, das heißt, Sie lesen und schreiben Strings aus und in die Datei, die sind in einer spezifischen Codierung codiert. Wenn keine Kodierung angegeben ist, ist der Standardwert plattformabhängig (siehe open()). 'b' angehängt an den Modus öffnet die Datei im Binärmodus: jetzt werden die Daten in Form von Bytes Objekten gelesen und geschrieben. Dieser Modus sollte für alle Dateien verwendet werden, die keinen Text enthalten.

Verwandte Themen