Python xlwt动态编写excel工作表
我习惯用以下方式创建电子表格:Python xlwt动态编写excel工作表,python,xlwt,Python,Xlwt,我习惯用以下方式创建电子表格: wbk = xlwt.Workbook() earnings_tab = wbk.add_sheet('EARNINGS') wbk.save(filepath) 有没有办法不将文件保存到文件路径,而是将其动态写入下载文件的用户?或者我需要将其保存为tmp文件,然后提供给用户吗?引用: 它也可以是具有写入方法的流对象,例如 StringIO,在这种情况下,excel文件的数据将写入 小溪 修改示例: import StringIO f
wbk = xlwt.Workbook()
earnings_tab = wbk.add_sheet('EARNINGS')
wbk.save(filepath)
有没有办法不将文件保存到文件路径,而是将其动态写入下载文件的用户?或者我需要将其保存为tmp文件,然后提供给用户吗?引用:
它也可以是具有写入方法的流对象,例如
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
在Python3中被io
取代
StringIO和cStringIO模块不见了。相反,请导入io模块,并分别对文本和数据使用io.StringIO或io.BytesIO
因此,请使用:
from io import StringIO
# instead of import StringIO
这是我在Django中使用的:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=file.xls'
book.save(response)
return response
Django用户:您可以保存到HTTPResponse。如果要从类似文件的对象中读取(io.read()),则需要添加io.seek(0)。
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()