def __init__(self,file,sheet): """ Takes the input file and the sheet name """ self.book = xlrd.open_workbook(file) self.sheet = self.book.sheet_by_name(sheet) self.dec = XLConverter(None,None,"./empty_config")
class Scores2012(BatchFileProcessor): def __init__(self,pattern,audit_file): super(Scores2012,self).__init__(pattern,SCORES_SUFFIX) self.dec = XLConverter(None,None,NO_CONFIG) self.audit_mapper = AuditScoreMapper2012(audit_file,AUDIT_SHEET) self.audit_mapper.process() def transform(self,inbook,outbook): (r,c) = self.dec.decode_single_cell('B1') facility_id = inbook.sheet_by_name(FACILITY_PROFILE).cell_value(rowx=r,colx=c) (r,c) = self.dec.decode_single_cell('B5') audit_date = inbook.sheet_by_name(AUDIT_GENERAL_INFO).cell_value(rowx=r,colx=c) out_sheet = outbook.add_sheet(SCORES) preferred_list = self.audit_mapper.get_preferred_cols(facility_id,audit_date) if( preferred_list): for r,row in enumerate(preferred_list): for c,col in enumerate(row): out_sheet.write(r,c,label=col) return True
class XLSheetProcessor(object): """ This class abstracts implements the base functionality needed for processing an excel sheet, row by row """ def __init__(self,file,sheet): """ Takes the input file and the sheet name """ self.book = xlrd.open_workbook(file) self.sheet = self.book.sheet_by_name(sheet) self.dec = XLConverter(None,None,"./empty_config") def process(self): for r in range(self.sheet.nrows): self.process_row(self.sheet.row_values(r)) def process_row(self,row_values): pass def read_col(self,row_values,col): c = self.dec.decode_col(col) return row_values[c]
def __init__(self,pattern,audit_file): super(Scores2012,self).__init__(pattern,SCORES_SUFFIX) self.dec = XLConverter(None,None,NO_CONFIG) self.audit_mapper = AuditScoreMapper2012(audit_file,AUDIT_SHEET) self.audit_mapper.process()
numbered_findings[0] = fhdr + "\n" + numbered_findings[0] for find in numbered_findings: ar.write_row(rx+1,id,cat,FINDING_TYPE,fhdr + find,u"".join(exd_observations),cause,"Cond2.1") elif not numbered_findings: ar.write_row(rx+1,id,cat,FINDING_TYPE,fhdr,u"".join(exd_observations),cause,"Cond1") else: #Cond4 - no such match. Dump findings and finding details and notify ar.write_row(rx+1,id,cat,FINDING_TYPE,finding,(d1 + "\n" + d2),cause,"Cond4: Neelansha Please look at it!") if fob and not fdob: ar.write_row(rx+1,id,cat,OBSERV_TYPE,fob,d1 + "\n" + d2,cause,"Cond5.1 observ") elif fob and fdob: ar.write_row(rx+1,id,cat,OBSERV_TYPE,fob,fdob,cause,"Cond5 observ") try: converter = XLConverter(book,ar.get_workbook(),config_file) converter.process() #get facility profile name from file (frow,fcol) = converter.decode_single_cell('B5') facility_name = facility_profile.cell_value(rowx=frow,colx=fcol).strip() facility_id = facility_mapper.get_facility_id(facility_name,2013) converter.write_value("Facility Profile","A1","Facility ID From MSS:") converter.write_value("Facility Profile","B1",facility_id) ar.save() logging.info('Written file: ' + ifile + ".xls") except: logging.error("Error processing file: " + ifile + ".No output written")