Hi! 
exporter example

0 pip install xlwt 
1 at end of gluon/sqlhtml.py 

class ExporterXLS(ExportClass):
    label = 'XLS'
    file_ext = "xls"
    content_type = ".xls"
    # https://gist.github.com/brendano/22764
    # https://groups.google.com/forum/#!topic/web2py/MR_8JzzP9o4
    def __init__(self, rows):
        ExportClass.__init__(self, rows)

    def export(self):
        import xlwt, cStringIO
        if len(self.rows) == 0:
              return 'empty rows-table'

        rows_colnames= [name.translate(None,'"') for name in 
self.rows.colnames ]

        (table_name, _)= rows_colnames[0].split('.')
        book = xlwt.Workbook()
        sheet = book.add_sheet(table_name)
        first_xls_row= 0
        # rows.db.licence.fld2.represent(row.fld2,3)

        def list2xls(row_num,line_list):
            for col_num, value in enumerate(line_list):
                 if value is None:
                     value=''
                 elif isinstance(value, long):
                     value= str(value)
                 elif isinstance(value, str):
                     value= value.decode('utf8')
                 elif isinstance(value,  datetime.date):
                     value= value.strftime('%d.%m.%Y')
                 elif isinstance(value, datetime.datetime):
                     value= value.strftime('%d.%m.%Y %H:%M:%S')
                 else:
                     value='####'
                 sheet.write(row_num, col_num, value)

        fields=[]; labels=[]
        for col in rows_colnames:
            (t,f) = col.split('.')
            fields.append(f)
            labels.append( self.rows.db[t][f].label )
        list2xls(first_xls_row, labels)

        for r_num, row in enumerate (self.rows, first_xls_row + 1):
             llist=[ row[f]  for f in fields]
             list2xls(r_num, llist)

        s = cStringIO.StringIO()
        book.save(s)
        return s.getvalue()

2  gluon/sqlhtml.py 
2517         exportManager = dict(
2518             axls=(ExporterXLS, 'XLS', T('Excell file')), # myfix
2519             csv_with_hidden_cols=(ExporterCSV_hidden, 'CSV (hidden 
cols)', T('Comma-separated export including columns not shown; fields from 
other tables are exported as raw values      for faster export')),
.......

3 it's work for me :)


воскресенье, 1 апреля 2018 г., 10:08:30 UTC+3 пользователь Ray (a.k.a. 
Iceberg) написал:
>
> Stumbled upon this blog post "Export in web2py's SQLFORM.grid 
> <http://rootpy.com/Export-in-SQLFORM-grid/>" by Prasad Muley. It provides 
> concrete example on how to customize an exporter TO REMOVE THE TABLE PREFIX 
> IN CSV HEADER LINE. That is easier to digest than the standard web2py 
> book's one-liner 
> <http://www.web2py.com/books/default/chapter/29/07/forms-and-validators#SQLFORMgrid-signature>
>  
> "(exporters) are all defined in gluon/sqlhtml.py. Take a look at those for 
> creating your own exporter.".
>
> Hope that helps! Enjoy!
>
> Regards,
> Ray
>
>
>

-- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to