簡體   English   中英

xlwt即時寫出excel表

[英]xlwt write excel sheet on the fly

我習慣用以下方式創建電子表格:

    wbk = xlwt.Workbook()
    earnings_tab = wbk.add_sheet('EARNINGS')
    wbk.save(filepath)

有沒有辦法不將文件保存到文件路徑,而是將其即時寫入下載文件的用戶? 或者我是否需要將其保存為tmp文件,然后將其提供給用戶?

引用xlwt.save()方法的xlwt

它也可以是具有write方法的流對象,例如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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM