def process_aaii_xls_key_file(filename): 'grabs the long attribute names to map onto stock objects' xlrd_workbook = xlrd.open_workbook(filename) relevant_spreadsheet_list = return_relevant_spreadsheet_list_from_workbook(xlrd_workbook) # only 1 sheet if not len(relevant_spreadsheet_list) == 1: print line_number(), "" print line_number(), "Error in process_sample_dot_xls() in wxStocks_xls_import_functions.py" print line_number(), "spreadsheet list > 1 sheet" print line_number(), "" return None spreadsheet = relevant_spreadsheet_list[0] spreadsheet_list_of_row_data = [] for i in range(spreadsheet.nrows): row_list = spreadsheet.row_values(i) spreadsheet_list_of_row_data.append(row_list) key_dict = {} for row_list in spreadsheet_list_of_row_data[1:]: key_dict[row_list[0]] = row_list[1] #print line_number() #pprint.pprint(key_dict) return key_dict
def process_aaii_xls_key_file(filename): 'grabs the long attribute names to map onto stock objects' xlrd_workbook = xlrd.open_workbook(filename) relevant_spreadsheet_list = return_relevant_spreadsheet_list_from_workbook( xlrd_workbook) # only 1 sheet if not len(relevant_spreadsheet_list) == 1: print line_number(), "" print line_number( ), "Error in process_sample_dot_xls() in wxStocks_xls_import_functions.py" print line_number(), "spreadsheet list > 1 sheet" print line_number(), "" return None spreadsheet = relevant_spreadsheet_list[0] spreadsheet_list_of_row_data = [] for i in range(spreadsheet.nrows): row_list = spreadsheet.row_values(i) spreadsheet_list_of_row_data.append(row_list) key_dict = {} for row_list in spreadsheet_list_of_row_data[1:]: key_dict[row_list[0]] = row_list[1] #print line_number() #pprint.pprint(key_dict) return key_dict
def process_aaii_xls_data_file(filename, key_dict): print line_number(), filename, "Start!" xlrd_workbook = xlrd.open_workbook(filename) relevant_spreadsheet_list = return_relevant_spreadsheet_list_from_workbook( xlrd_workbook) ticker_column_string = u"ticker" # only 1 sheet if not len(relevant_spreadsheet_list) == 1: print line_number(), "" print line_number( ), "Error in process_sample_dot_xls() in wxStocks_xls_import_functions.py" print line_number(), "spreadsheet list > 1 sheet" print line_number(), "" sys.exit() spreadsheet = relevant_spreadsheet_list[0] num_columns = spreadsheet.ncols num_rows = spreadsheet.nrows # important row and column numbers top_row = 0 # 1st row spreadsheet_list_of_row_data = [] for i in range(spreadsheet.nrows): row_list = spreadsheet.row_values(i) spreadsheet_list_of_row_data.append(row_list) ticker_location = spreadsheet_list_of_row_data[0].index(u'ticker') #print line_number(), spreadsheet_list_of_row_data[0] current_time = time.time() for row_list in spreadsheet_list_of_row_data[1:]: ticker = str(row_list[ticker_location]) current_stock = db.create_new_Stock_if_it_doesnt_exist(ticker) for attribute in spreadsheet_list_of_row_data[0]: # get the shortened attribute name here attribute_index = spreadsheet_list_of_row_data[0].index(attribute) if attribute_index == ticker_location: continue long_attribute_name = key_dict.get(attribute.upper()) #print line_number(), long_attribute_name long_attribute_name = remove_inappropriate_characters_from_attribute_name( long_attribute_name) #print line_number(), long_attribute_name datum = row_list[attribute_index] db.set_Stock_attribute(current_stock, long_attribute_name, datum, "_aa") # set last update time if not current_stock.firm_name: try: current_stock.firm_name = current_stock.Company_name_aa except: pass current_stock.last_aaii_update_aa = current_time
def process_aaii_xls_data_file(filename, key_dict): print line_number(), filename, "Start!" xlrd_workbook = xlrd.open_workbook(filename) relevant_spreadsheet_list = return_relevant_spreadsheet_list_from_workbook(xlrd_workbook) ticker_column_string = u"ticker" # only 1 sheet if not len(relevant_spreadsheet_list) == 1: print line_number(), "" print line_number(), "Error in process_sample_dot_xls() in wxStocks_xls_import_functions.py" print line_number(), "spreadsheet list > 1 sheet" print line_number(), "" sys.exit() spreadsheet = relevant_spreadsheet_list[0] num_columns = spreadsheet.ncols num_rows = spreadsheet.nrows # important row and column numbers top_row = 0 # 1st row spreadsheet_list_of_row_data = [] for i in range(spreadsheet.nrows): row_list = spreadsheet.row_values(i) spreadsheet_list_of_row_data.append(row_list) ticker_location = spreadsheet_list_of_row_data[0].index(u'ticker') #print line_number(), spreadsheet_list_of_row_data[0] current_time = time.time() for row_list in spreadsheet_list_of_row_data[1:]: ticker = str(row_list[ticker_location]) current_stock = db.create_new_Stock_if_it_doesnt_exist(ticker) for attribute in spreadsheet_list_of_row_data[0]: # get the shortened attribute name here attribute_index = spreadsheet_list_of_row_data[0].index(attribute) if attribute_index == ticker_location: continue long_attribute_name = key_dict.get(attribute.upper()) #print line_number(), long_attribute_name long_attribute_name = remove_inappropriate_characters_from_attribute_name(long_attribute_name) #print line_number(), long_attribute_name datum = row_list[attribute_index] db.set_Stock_attribute(current_stock, long_attribute_name, datum, "_aa") # set last update time if not current_stock.firm_name: try: current_stock.firm_name = current_stock.Company_name_aa except: pass current_stock.last_aaii_update_aa = current_time
def import_xls_via_user_created_function(wxWindow, user_created_function): '''adds import csv data to stocks data via a user created function''' try: from modules import xlrd except: logging.error( "Error: cannot import xls file because xlrd module failed to load") return dirname = '' dialog = wx.FileDialog(wxWindow, "Choose a file", dirname, "", "*.xls", wx.OPEN) if dialog.ShowModal() == wx.ID_OK: filename = dialog.GetFilename() dirname = dialog.GetDirectory() #csv_file = open(os.path.join(dirname, filename), 'rb') xls_workbook = xlrd.open_workbook(dirname + "/" + filename) dict_list_and_attribute_suffix_tuple = user_created_function( xls_workbook) else: dialog.Destroy() return dialog.Destroy() # process returned tuple attribute_suffix = dict_list_and_attribute_suffix_tuple[1] success = None if len(attribute_suffix) != 3 or attribute_suffix[0] != "_": logging.error("Error: your attribute suffix is improperly formatted") success = "fail" return success dict_list = dict_list_and_attribute_suffix_tuple[0] for this_dict in dict_list: if not this_dict: continue try: this_dict['stock'] except Exception as e: logging.error(e) logging.error( "Error: your dictionary does not have the ticker as your_dictionary['stock']" ) if success in ["success", "some"]: success = "some" else: success = "fail" continue stock = utils.return_stock_by_symbol(this_dict['stock']) if not stock: logging.error( "Error: your_dictionary['stock'] does not return a recognized ticker symbol." ) if success in ["success", "some"]: success = "some" else: success = "fail" continue for key, value in this_dict.items(): if key == "stock": continue else: setattr(stock, key + attribute_suffix, value) if success in ["fail", "some"]: success = "some" else: success = "success" return success
from modules import xlrd xls_files = ["sample_aaii.xls", "tiny.xls"] test_file = xls_files[1] workbook = xlrd.open_workbook(test_file) print "The number of worksheets is", workbook.nsheets def return_relevant_spreadsheet_list_from_workbook(xlrd_workbook): relevant_sheets = [] for i in range(workbook.nsheets): sheet = workbook.sheet_by_index(i) print sheet.name if sheet.nrows or sheet.ncols: print "rows x cols:", sheet.nrows, sheet.ncols relevant_sheets.append(sheet) else: print "is empty" print "" return relevant_sheets def return_xls_cell_value(xlrd_spreadsheet, row, column): return xlrd_spreadsheet.cell_value(rowx=row, colx=column) relevant_sheets = return_relevant_spreadsheet_list_from_workbook(workbook) print "The number of relevant worksheets is", len(relevant_sheets) print "Worksheet name(s):", [x.name for x in relevant_sheets]
def import_xls_via_user_created_function(wxWindow, user_created_function): '''adds import csv data to stocks data via a user created function''' try: from modules import xlrd except: print line_number(), "Error: cannot import xls file because xlrd module failed to load" return dirname = '' dialog = wx.FileDialog(wxWindow, "Choose a file", dirname, "", "*.xls", wx.OPEN) if dialog.ShowModal() == wx.ID_OK: filename = dialog.GetFilename() dirname = dialog.GetDirectory() #csv_file = open(os.path.join(dirname, filename), 'rb') xls_workbook = xlrd.open_workbook(dirname + "/" + filename) dict_list_and_attribute_suffix_tuple = user_created_function(xls_workbook) else: dialog.Destroy() return dialog.Destroy() # process returned tuple attribute_suffix = dict_list_and_attribute_suffix_tuple[1] success = None if len(attribute_suffix) != 3 or attribute_suffix[0] != "_": print line_number(), "Error: your attribute suffix is improperly formatted" success = "fail" return success dict_list = dict_list_and_attribute_suffix_tuple[0] for this_dict in dict_list: if not this_dict: continue try: this_dict['stock'] except Exception as e: print line_number(), e print line_number(), "Error: your dictionary does not have the ticker as your_dictionary['stock']" if success in ["success", "some"]: success = "some" else: success = "fail" continue stock = utils.return_stock_by_symbol(this_dict['stock']) if not stock: print line_number(), "Error: your_dictionary['stock'] does not return a recognized ticker symbol." if success in ["success", "some"]: success = "some" else: success = "fail" continue for key, value in this_dict.iteritems(): if key == "stock": continue else: setattr(stock, key + attribute_suffix, value) if success in ["fail", "some"]: success = "some" else: success = "success" return success
from modules import xlrd xls_files = ["sample_aaii.xls", "tiny.xls"] test_file = xls_files[1] workbook = xlrd.open_workbook(test_file) print "The number of worksheets is", workbook.nsheets def return_relevant_spreadsheet_list_from_workbook(xlrd_workbook): relevant_sheets = [] for i in range(workbook.nsheets): sheet = workbook.sheet_by_index(i) print sheet.name if sheet.nrows or sheet.ncols: print "rows x cols:", sheet.nrows, sheet.ncols relevant_sheets.append(sheet) else: print "is empty" print "" return relevant_sheets def return_xls_cell_value(xlrd_spreadsheet, row, column): return xlrd_spreadsheet.cell_value(rowx=row, colx=column) relevant_sheets = return_relevant_spreadsheet_list_from_workbook(workbook) print "The number of relevant worksheets is", len(relevant_sheets)