我曾经创建过下列方式的电子表格:
wbk = xlwt.Workbook()
earnings_tab = wbk.add_sheet('EARNINGS')
wbk.save(filepath)
有没有什么办法不保存文件到文件路径,而是把它写在最飞到谁下载文件的用户? 或者,我需要把它保存为tmp文件,然后投放到用户?
我曾经创建过下列方式的电子表格:
wbk = xlwt.Workbook()
earnings_tab = wbk.add_sheet('EARNINGS')
wbk.save(filepath)
有没有什么办法不保存文件到文件路径,而是把它写在最飞到谁下载文件的用户? 或者,我需要把它保存为tmp文件,然后投放到用户?
要引用文档的.save()
的方法xlwt
:
它也可以是具有写方法,如流对象
StringIO
,在这种情况下为Excel文件中的数据被写入到该流。
变形例:
import StringIO
f = StringIO.StringIO() # create a file-like object
wbk = xlwt.Workbook()
earnings_tab = wbk.add_sheet('EARNINGS')
wbk.save(f) # write to stdout
有些人可能会建议你使用cStringIO
代替StringIO
,但事先警告cStringIO
最后,当我检查不能正确处理Unicode。
这也许还值得一提的是StringIO
是在Python 3替换io
。
这是我在Django使用:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=file.xls'
book.save(response)
return response
class QueryToExcel(object):
def __init__(self, doc_name = 'doc_name'):
#some set up stuff
self.b_io = BytesIO()
self.workbook = pd.ExcelWriter(self.b_io, engine='xlsxwriter')
self.run() #fill in workbook with pandas dataframes
self.workbook.save()
def get_workbook(self):
return self.b_io.getvalue()
app = Flask(__name__)
app.debug = True
@app.route('/pvh/', methods = ['GET'])
def get_workbook(self):
return self.b_io.getvalue()