Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python xlwt动态编写excel工作表_Python_Xlwt - Fatal编程技术网

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()