如何将Openpyxl生成的xlsx输出到浏览器? [英] how to output xlsx generated by Openpyxl to browser?

查看:655
本文介绍了如何将Openpyxl生成的xlsx输出到浏览器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用stackoverflow一段时间,它帮助我很多次。现在我有一个问题我无法解决自己或通过搜索。
我正在尝试输出我的浏览器中由openpyxl生成的excel文件,因为我正在使用phpexcel。该方法似乎是一样的,但我只收到破碎的文件。我的代码如下所示:

  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\\\
'

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)
我使用的是1.5.8和python 2.7版本。
没有任何方法可行。当我从桌面使用它,而不是浏览器它是完美无瑕的。
我将非常感谢您的帮助。



P.S。请不要告诉我使用其他语言或程序会更容易。我需要用python解决这个问题。

解决方案

这对我来说是有效的。我从烧瓶中使用 python 2.7 和最新的 openpyxl send_file

  ...代码... 

import StringIO
from openpyxl import Workbook
wb = Workbook()
ws = wb.active#工作表
ws.title =使用Openpyxl的Excel
c = ws.cell(row = 5,column = 5)
c.value =Hi on 5,5
out = StringIO.StringIO()
wb.save(out)
out.seek(0)

return send_file(out,mimetype ='application / vnd.openxmlformats-officedocument.spreadsheetml.sheet',
attachment_filename ='xxl.xlsx',as_attachment = True)


I was using stackoverflow for a while now and it helped me very often. Now I have a problem I couldn't solve myself or through searching. I'm trying to output my excel file generated by openpyxl in browser as I was doing it with phpexcel. The method appears to be the same, but I only get broken file. My code looks like this:

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)

I use the version 1.5.8 and python 2.7. None of the approaches works. When I just use it from desktop and not browser it works flawlessly. I would be very thankful for help.

P.S. please don't tell me that using other language or program would be easier. I need to solve this with python.

解决方案

this is work for me. I use python 2.7 and latest openpyxl and send_file from flask

... code ...

import StringIO
from openpyxl import Workbook
wb = Workbook()
ws = wb.active # worksheet
ws.title = "Excel Using Openpyxl"
c = ws.cell(row=5, column=5)
c.value = "Hi on 5,5"
out = StringIO.StringIO()
wb.save(out)
out.seek(0)

return send_file(out, mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
            attachment_filename='xxl.xlsx', as_attachment=True)

这篇关于如何将Openpyxl生成的xlsx输出到浏览器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆