Thanks Mr.Khalil!
I will surely give it a try!

On 30 April 2012 13:24, Khalil KHAMLICHI <[email protected]> wrote:

> Raul, when working with the web you always (most of the times) create the
> files server side and invite user to download it and save it to his file
> system, this sais you don't need to access the file system yourself, just
> invite the user to download your file and you are done.
> for csv versus txt files, they are both the same thing IF the user is not
> going to import them into some other software that needs only csv content,
> python has a module called StringIO, you can use it as a file and write to
> it mixed content : simple text and csv data.
>
> On Mon, Apr 30, 2012 at 6:03 AM, RAHUL PRIYADARSI 
> <[email protected]>wrote:
>
>> Dear All,
>> Thanks for your answers.But what I was looking for was,putting into
>> simple words,implementing a use case similar to the following "The system
>> maintains the data related to each transaction.Each transaction includes
>> the list of items demanded per transaction with each item belonging to a
>> category.The system also generates an aggregated report per transaction as
>> well as an overall report of the total items belonging to each category
>> demanded.".Now "the report" here need not be in csv only.It may be txt
>> file.Since I am not sure as to whether is it possible to print formatted
>> strings(e.g. the string "report" printed right aligned in a total field of
>> 15 characters,something likd printf(%15s)) in web2py,my question is that
>> how we do file IO in web2py. Can we generate a txt file in web2py. And can
>> we print formatted strings to it?
>> Since the controller runs on server and my application would be deployed
>> in an intranet lan and it needs to generate files to be used in local file
>> system of the system on which the user will access the app , where must
>> this file IO code be written, in controller or view.
>>
>>
>> On 30 April 2012 07:35, Brian M <[email protected]> wrote:
>>
>>> Yep, I've got a processing app that spits out all sorts of csv files
>>> based on data gathered from multiple sources.
>>>
>>> Here's a little helper function I use
>>>
>>> def csv_export(records, column_names, fields, mode = 'dal'):
>>>     """Export DAL result set, list of dicts or list of lists to CSV
>>> stream for returning to user
>>>     Arguments:
>>>     records = the data to be returned
>>>     column_names (list)= the column names/headings for the first row in
>>> the CSV file
>>>                     Example ['First Name', 'Last Name', 'Email']
>>>     fields (list) = the names of the fields (as they appear in records)
>>> in the order they
>>>                     should be in the CSV. Example ['f_name', 'l_name',
>>> 'email']
>>>                     or ['table_a.f_name', 'table_a.l_name',
>>> 'table_b.email']
>>>                     If mode = 'list' and your records are in the correct
>>> order then fields may be None
>>>                     otherwise use [1,3,0] if you list is in a different
>>> order
>>>     mode (string) = what type of data is in records? 'dal' (Default),
>>> 'dict' or 'list'
>>>                     'dal' if records came from a regular dal query
>>> (Default)
>>>                     'dict' if records are a list of dicts (for example
>>> using db.executesql() with as_dict = True)
>>>                     'list' if records are a list of lists/tuples (for
>>> example using db.executesql() with as_dict = False)
>>>
>>>     """
>>>
>>>     #create fake file object
>>>     import cStringIO
>>>     file = cStringIO.StringIO()
>>>     #setup csv writer
>>>     import csv
>>>     csv_file = csv.writer(file)
>>>     #write first row withspecified column headings/names
>>>     csv_file.writerow(column_names)
>>>     #which mode - dal or dict?
>>>     if mode.lower() == 'dal' or mode.lower() == 'dict':
>>>         for record in records:
>>>             csv_file.writerow([record[field] for field in fields])
>>>     elif mode.lower() == 'list':
>>>         if fields == None:
>>>             csv_file.writerows(records)
>>>         else:
>>>             for record in records:
>>>                 csv_file.writerow([record[field] for field in fields])
>>>     return file
>>>
>>>
>>>
>>> Then in a controller you can have something like
>>>
>>>     csv_stream = csv_export(processed_dataset, column_names, fields,
>>> mode = 'dict')
>>>     response.headers['Content-Type']='application/vnd.ms-excel'
>>>     response.headers['Content-Disposition']='attachment;
>>> filename=data_for_%s.csv' % date.today()
>>>     return csv_stream.getvalue()
>>>
>>> which will cause browser to download the csv file with your chosen
>>> filename
>>>
>>> you could also turn around and save the datafile to the filesystem if
>>> you wanted.
>>>
>>> Hope this helps!
>>> Brian
>>>
>>>
>>> On Saturday, April 28, 2012 5:20:15 AM UTC-5, rahulserver wrote:
>>>>
>>>> I wish to generate a few reports in csv or txt or other file formats
>>>> based on some database data maintained through a crud application.
>>>> Previously, it was done through an asp.net application with vb as
>>>> scripting language.But as I explored the wonderful capabilities of web2py,
>>>> I have become a fan of this terrific framework.
>>>> Is it possible to do it in web2py. And if it is, then how and where
>>>> should the code be placed.In the view or model or controller?
>>>>
>>>
>>
>

Reply via email to