Search code examples
pythonflaskpython-docx

Generating word docs with Flask?


I'm trying to spin up a single page flask application that allows users to download a word document. I've already figured out how to make/save the document using python-docx, but now I need to make the document available in the response. Any ideas?

Here's what I have so far:

from flask import Flask, render_template
from docx import Document
from cStringIO import StringIO

@app.route('/')
def index():
    document = Document()
    document.add_heading("Sample Press Release", 0)
    f = StringIO()
    document.save(f)
    length = f.tell()
    f.seek(0)
    return render_template('index.html')

Solution

  • instead of render_template('index.html') you can just:

    from flask import Flask, render_template, send_file
    from docx import Document
    from cStringIO import StringIO
    
    @app.route('/')
    def index():
        document = Document()
        document.add_heading("Sample Press Release", 0)
        f = StringIO()
        document.save(f)
        length = f.tell()
        f.seek(0)
        return send_file(f, as_attachment=True, attachment_filename='report.doc')