My experiments gave the following results.

def export_day():
    response.headers['content-type']='text/csv'
    response.headers['Content-disposition'] = 'attachment;
filename=export.csv'
    results=db(db.autos.dt>=date).select(orderby=~db.autos.dt)
    return '\n'.join([';'.join(map(str,['id','num','ves','dt','usr
\n']))])+'\n'.join([';'.join(map(str,[r.id, r.num, r.ves, r.dt,
r.usr])) for r in results])

I changed delimiter to ";" and added sepator to the header. Also I
wrote content-desposition for headers and now no need to right click
to the link to save file as.
So, it works perfectly! Thank you Denes for you help!
***********************************************************************

On 3 май, 18:37, DenesL <denes1...@yahoo.ca> wrote:
> Are you running Windows?.
> Check that your list separator (which Excel uses) is set to a comma or
> change the delimiter used in the code.
> You can find the list separator in the Control Panel, under Regional
> Settings, Customize.
>
> On May 3, 7:38 am, cyber <vlad.mul...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I mean that after export each row is located into one cell (if I open
> > *.csv file in ms excel).
> > For example, if result returns two rows all values from first row are
> > located into A1 cell and the second one - into A2 cell.
> > So, I need to divide each row by columns. Current divider is ",". Is
> > there a way to use another tabular separator if i want each value to
> > be placed into each cell?
> > *************************************************************************** 
> > **
>
> > On 3 май, 00:04, DenesL <denes1...@yahoo.ca> wrote:
>
> > > Sorry, I don't understand what you mean by divide search results.
>
> > > As for headers, you could do:
>
> > > ...
> > > return 'A1,B1,C1\n' + '\n'.join([','.join(map(str,[r.id, r.num, r.ves,
> > > r.dt, r.usr])) for r in rr])
>
> > > On May 2, 2:42 pm, cyber <vlad.mul...@gmail.com> wrote:
>
> > > > Denes, it works. Thanks!
> > > > But how to divide search results?
> > > > Finaly I want each table field to be into personal column in the row
> > > > in csv file.
> > > > For example, r.id should be into A1, r.num should be into B1 etc.
> > > > Is it possible?
>
> > > > *********************************************************************
>
> > > > On 2 май, 00:27, DenesL <denes1...@yahoo.ca> wrote:
>
> > > > > You can provide a link to the controller below, instructing the user
> > > > > to right click on it and then select 'save link as...', he can store
> > > > > the response in any selected directory using his choice of filename (a
> > > > > name ending in .csv):
>
> > > > > def tocsv():
> > > > >   response.headers['content-type']='text/csv'
> > > > >   rr=db((db.autos.dt>=t1) &
> > > > > (db.autos.dt<=t2)).select(orderby=~db.autos.dt)
> > > > >   return '\n'.join([','.join(map(str,[r.id, r.num, r.ves, r.dt,
> > > > > r.usr])) for r in rr])

Reply via email to