Dear Brian, Thanks a lot for your help.
On Feb 3, 4:29 am, Brian M <bmere...@gmail.com> wrote: > Neveen, > > I've got a mini app that I upload excel files to for later parsing, here's > now I do it. Getting the file would probably be even easier if you used an > upload field in the DB & CRUD forms. > > def excel_uploader(): > response.subtitle = "Upload excel file " > from gluon.sqlhtml import form_factory > form=form_factory(SQLField('import_xls','upload')) > if form.accepts(request.vars,session): > request.flash='Received: %s'%request.vars.import_xls > path = > os.path.join(request.folder,'private','spreadsheet_to_process.xls') > #I happen to be copying the uploaded file to a known location & > filename, but you wouldn't have to > #the uploaded file gets saved to the /uploads folder with a > auto-generated name too > import shutil > shutil.copyfileobj(request.vars.import_xls.file,open(path, 'wb')) > > #Then redirect to the next screen (or do the processing now) > redirect(URL(r=request, f='process_excel')) > > return dict(form=form) > > def process_excel(): > import xlrd > from applications.app_name.modules.readexcel import readexcel as > readexcel > > #seehttp://code.activestate.com/recipes/483742-easy-cross-platform-excel-... > > excel_filepath = > os.path.join(request.folder,'private','spreadsheet_to_process.xls') > xl = readexcel(excel_filepath) > sheetnames = xl.worksheets() > #for sheet in sheetnames: > # print sheet > #for row in xl.getiter('Sheet name'): > # print row > return dict(rows = xl.getiter('Sheet Contents'))