I think your problems comes from the fact that any external library doesn't 
know how to handle T objects.
You should use str(T('something')) instead to convert T instances to 
strings, that will be digested by external libs pretty easily.

On Sunday, October 26, 2014 7:18:26 PM UTC+1, Stefan van den Eertwegh wrote:
>
> Hi Massimo,
>
> No thank you, i use weasyprint for making PDFs, which is very easy with 
> self made html views.
> This topic goes about using web2py to make excel sheets.
>
> Maybe you have some ideas Massimo?
>
> Thank you!
>
> Op zondag 26 oktober 2014 16:34:58 UTC+1 schreef Stefan van den Eertwegh:
>>
>> Hi,
>>
>> I am writing for my invoice app a excel (xlsx) function to export a view 
>> of al my invoices to excel.
>> Does anyone has some experience with xlsxwriter? Or some tips or 
>> alternatives?
>>
>> Or maybe you advise me to use xlwt from python-excel.org?
>>
>> I am having trouble with the translatable string that i use in the excel 
>> function.
>> It seems it returns the lazyT object in the string but xlsxwriter fails 
>> on this.
>>
>> When i set T.lazy = False it has no change with the error..
>>
>> Does anyone knows the problem?
>>
>> I have written the following code:
>>
>> # -*- coding: utf-8 -*-
>> @auth.requires_login()
>> def invoice():
>>
>>     import xlsxwriter
>>
>>     # Create a workbook and add a worksheet.
>>     workbook = xlsxwriter.Workbook('Expenses03.xlsx')
>>     worksheet = workbook.add_worksheet()
>>
>>     # Add a bold format to use to highlight cells.
>>     bold = workbook.add_format({'bold': 1})
>>     eurosign = u"€"
>>     # Add a number format for cells with money.
>>     money_format = workbook.add_format({'num_format': eurosign + '#,##0'})
>>
>>     # Add an Excel date format.
>>     date_format = workbook.add_format({'num_format': 'd mmmm yyyy'})
>>
>>     # Adjust the column width.
>>     worksheet.set_column(1, 1, 30)
>>
>>     # Write some data headers.
>>     worksheet.write('A1', T('Invoice no.'), bold)
>>     worksheet.write('B1', T('Debtor'), bold)
>>     worksheet.write('C1', T('Invoice date'), bold)
>>     worksheet.write('D1', T('Amount incl. VAT'), bold)
>>     worksheet.write('E1', T('Type'), bold)
>>
>>     # Some data we want to write to the worksheet.
>>     data = []
>>     rows = db(db.invoice.company == u.company).select()
>>     for record in rows:
>>         if not record.debtor.company_name:
>>             prefix = ' ' + record.debtor.prefix if record.debtor.prefix 
>> else ''
>>             debtor = record.debtor.first_name + prefix + ' ' + 
>> record.debtor.last_name
>>         else:
>>             debtor = record.debtor.company_name
>>         data.append([record.no, debtor, record.date, 
>> record.amount_incl_VAT, record.type])
>>
>>     # Start from the first cell below the headers.
>>     row = 1
>>     col = 0
>>
>>     for no, debtor, date, cost, rtype in data:
>>         worksheet.write_string  (row, col,     no                )
>>         worksheet.write_string  (row, col + 1, debtor            )
>>         worksheet.write_datetime(row, col + 2, date, date_format )
>>         worksheet.write_number  (row, col + 3, int(cost), money_format)
>>         worksheet.write_string  (row, col + 4, rtype              )
>>         row += 1
>>
>>     # # Write a total using a formula.
>>     worksheet.write(row, 0, T('Total'), bold)
>>     worksheet.write(row, 3, '=SUM(C2:C' + str(len(data)+1) + ')', 
>> money_format)
>>
>>     workbook.close()
>>
>>
>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to