Ich benutze Stackoverflow schon eine Weile und es hat mir sehr geholfen. Jetzt habe ich ein Problem, das ich selbst oder durch Suchen nicht lösen konnte. Ich versuche meine von openpyxl erzeugte Excel-Datei im Browser auszugeben, so wie ich es mit phpexcel gemacht habe. Die Methode scheint die gleiche zu sein, aber ich bekomme nur eine defekte Datei. Mein Code sieht so aus:Wie gebe ich xlsx aus, das von Openpyxl zum Browser generiert wurde?
from openpyxl.workbook import Workbook
from openpyxl.writer.excel import ExcelWriter
from openpyxl.writer.excel import save_virtual_workbook
from openpyxl.cell import get_column_letter
from StringIO import StringIO
print 'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
print 'Content-Disposition: attachment;filename="results.xlsx"'
print 'Cache-Control: max-age=0\n'
output = StringIO()
wb = Workbook()
ws = wb.worksheets[0]
ws.cell('A1').value = 3.14
wb.save(output)
print output.getvalue()
#print save_virtual_workbook(wb)
Ich benutze die Version 1.5.8 und Python 2.7. Keiner der Ansätze funktioniert. Wenn ich es nur vom Desktop und nicht vom Browser verwende, funktioniert es einwandfrei. Ich wäre sehr dankbar für Hilfe.
P.S. Bitte sagen Sie mir nicht, dass die Verwendung anderer Sprachen oder Programme einfacher wäre. Ich muss das mit Python lösen.
Aus dieser Frage nehme ich an, Sie haben keine Erfahrungen über Web-Programmierung in Python. Sie können diesen Code nicht in eine * .py-Datei in Ihrem Dokumentstammverzeichnis einfügen und erwarten, dass er wie eine * .php-Datei ausgeführt wird. – Dikei
Ihre Content- * Header sehen fehlerhaft aus. Sie sollten CR/LF Zeilenendungen verwenden. Kannst du ein einfaches 'text/html'-Sample erhalten, das korrekt von diesem Skript bedient wird? Wenn nein, fixiere das zuerst. – tripleee
Ich habe genug Erfahrung zu wissen, um es von CGI-bin zu starten. Ich habe andere Skripts ausgeführt. Dies ist der erste, der nicht ausgibt, was ich brauche. Ja, sauber Text/HTML funktioniert perfekt, zumindest soweit ich getestet habe. Ich sehe nicht, warum ich CR/LF benutzen sollte ... – seeebek