You are welcome.

Note: if you have strings you don't need map(str,...) and
that \n at the end of 'usr\n' must be causing a blank line, so

'\n'.join([';'.join(map(str,['id','num','ves','dt','usr\n']))])

can be just

'%s\n' %';'.join('id num ves dt usr'.split())


On May 3, 3:46 pm, cyber <[email protected]> wrote:
> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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