Hi

+1 on this except that I use xlrd and xlwt to read and write Excel files. To 
generate the excel file I just generate a list of lists (an array effectively) 
and pass that through a function which walks the list and generates the excel 
worksheet that I write to a StringIO so it can be returned to the client.

François

On Oct 2, 2013, at 6:34 AM, Jirka Vejrazka <jirka.vejra...@gmail.com> wrote:

> Hi Thomas, 
> 
>  I'm doing exactly this - allowing users to download (graphically simple) 
> XLSx files from my web app, it also needs to be available for download weeks 
> later. 
> 
>   As Russell pointed out, you don't need to store data on this if you have a 
> way of getting the same set of data later, you can always regenerate the same 
> Excel file. You don't even need to use StringIO for that.
> 
>  I'm using the save_virtual_notebook() in openpyxl package to generate the 
> Excel file straight from database upon each (infrequent) request.
> 
>   HTH
> 
>     Jirka
> 
> 
> On Wed, Oct 2, 2013 at 9:36 AM, Russell Keith-Magee <russ...@keith-magee.com> 
> wrote:
> 
> On Wed, Oct 2, 2013 at 2:33 PM, DJ-Tom <eventel...@gmail.com> wrote:
> Hi,
> 
> this is quite easy to answer - those reports need to be archived - users must 
> be able to download them days or weeks later.
> 
> So I will create a record in a database for each report that is created so 
> users can access it later - maybe this can be seen as "uploading" a file to 
> the server that acts as a document repository, with the only difference that 
> the file is not uploaded, but produced by the server.
> 
> Well, if you need archival, there are two alternatives:
> 
> 1. Write the file to disk at the same time it is being generated. There's no 
> reason you have to serve the file from where it was generated -- generate it, 
> write it, and serve it.
> 
> 2. Make sure the report will always be generated the same way. An analog here 
> -- if you request a page from a web server, it probably isn't saved on disk 
> like that (unless it's a genuinely static page) -- the server knows how to 
> reproduce the same page every time you request a specific URL. Make the 
> reports the same -- if you request /report/September-2013, you generate the 
> same report every time. 
> 
> The second approach depends on whether you have well time-bucketed data, but 
> it's certainly possible to do.
> 
> I don't see how I could use the xlsxwriter object in the way it is described 
> here https://docs.djangoproject.com/en/1.5/howto/outputting-pdf/ - how could 
> I pass the httpresponse object to xlsxWriter?
> (Maybe I have not yet found how this might work - but it is not what I need 
> anyways...)
> 
> I haven't used xlsxwriter myself, but the key part of the PDF example is that 
> StringIO is an object that adheres to the python File API, but doesn't 
> actually involve a file. So, you open a StringIO object, "write" to it, then 
> dump the contents as the HTTP response. 
> 
> So - whatever API endpoint on xlsxwriter lets you pass in a file object -- 
> pass in a StringIO instance instead.
> 
> Yours,
> Russ Magee %-)
> 
> 
> 
> Thomas
> 
> Am Mittwoch, 2. Oktober 2013 02:11:21 UTC+2 schrieb Russell Keith-Magee:
> 
> On Tue, Oct 1, 2013 at 9:49 PM, DJ-Tom <event...@gmail.com> wrote:
> Hi,
> 
> I need to create database report downloads in Excel format (via xlsxwriter) 
> and I'm wondering if there is any standard or best practice as to where those 
> downloads should be located.
> 
> Especially helpful would be if there was a portable way of managing the file 
> system location and web request url in a way so that I don't have to change 
> settings between the development and production server.
> 
> Is this -> https://docs.djangoproject.com/en/1.5/topics/files/ the way to go?
> 
> If they're sever generated, why do they need to hit the file system at all? 
> 
> The following example in the docs:
> 
> https://docs.djangoproject.com/en/1.5/howto/outputting-pdf/
> 
> shows how you can stream a report directly to the end user. The example uses 
> reportlab to produce a PDF, but the same approach will work for a tool 
> writing to a different format.
> 
> Yours,
> Russ Magee %-)
>  
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/93413618-01d4-4fc0-a4d0-94fa67efe371%40googlegroups.com.
> 
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/CAJxq84-kJ%2BNhxt43b_ighenWZGErpHvPRE3q53BGrDczckFPyg%40mail.gmail.com.
> 
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/CAFhEBEARVBt%3DQMavyq3gt8XaVXvmmeAH_CKT3jcyPS2e8h8MTQ%40mail.gmail.com.
> For more options, visit https://groups.google.com/groups/opt_out.

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to