Actually, the number of blank lines is exactly 6 + (3 x number of rows). In 
web2py templates, every {{...}} that doesn't write anything to the view 
still generates a blank line in the output. Your code (up to and including 
the response.write line) includes 6 blocks of {{...}} that are called once, 
plus three blocks of {{...}} (including pass) within your loop (resulting 
in 3 blank lines per record).

Instead, try putting all the code in a single block:

{{
[all code goes here]
}} 

Anthony

On Wednesday, November 16, 2011 2:36:26 PM UTC-5, Nate Atkinson wrote:
>
> Hi, 
>
> I'm trying to create a CSV view for a set of rows. Here's the code for 
> the view: 
>
> {{import StringIO, csv}} 
> {{outfile = StringIO.StringIO()}} 
> {{mywriter = csv.writer(outfile, dialect=csv.excel_tab)}} 
> {{mywriter.writerow(['Name', 'Address', 'City', 'State'])}} 
> {{for row in places:}} 
> {{mydata = [row.plads.name, row.plads.address, row.plads.city, 
> row.plads.state.state]}} 
> {{mywriter.writerow(mydata)}} 
> {{pass}} 
> {{response.headers['Content-Disposition'] = 'attachment; filename= 
> %s.csv' %(routeinfo.name)}} 
> {{response.write(outfile.getvalue(), escape=True)}} 
> {{outfile.close()}} 
>
>
> This generates a csv file, but when I open it with excel, there are 
> several blank lines before the usable data. The only rhyme or reason I 
> see to it, is that the number of leading blank lines is about 3.2x the 
> number of rows. So, when I have 30 rows (two different sets of 30 
> rows), there are 96 leading blank lines. 27 rows gets me 87 leading 
> lines, and 19 rows gets me 63. 
>
> If I open the file with Emacs or try to import for MapPoint, I still 
> get the leading blank lines. If I open the file with Notepad, the 
> leading lines are not present. 
>
> I think this has something to do with the newline character. The 
> server is running Debian, and the clients are on Windows. 
>
> Anyone have any ideas for how to solve this?

Reply via email to