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
#see
http://code.activestate.com/recipes/483742-easy-cross-platform-excel-parsing-with-xlrd/
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'))