def load(self):
        xlsfile = xlrd.open_workbook(self._xls_file_path)
        self._common_kwargs = self._build_common_election_kwargs()

        # Set the correct reporting level based on file name
        if 'precinct' in self.mapping['generated_filename']:
            reporting_level = 'precinct'
        else:
            reporting_level = 'county'

        self._common_kwargs['reporting_level'] = reporting_level
        results = []
        sheet = xlsfile.sheet_by_index(0)

        """
        I ran into an issue where RawResult wasn't loading any results for my
        .xls files. I hypothesized that the _skip_row method was, for whatever
        reason, skipping all the results. I was correct, and found out that
        the indices of an Excel sheet (through the xlrd module) need to be
        integers, not string. My normalzing class returns strings, thus
        causing _skip_row to always return false as xlrd couldn't do
        anything with a string.

        self.header is a list, and so I run the list through my normalzing
        class which returns a list with one value (the column we want). I
        turn that list value into a string and find the index of that string
        within the header list.

        That returns the correct integer value for the column which holds the
        contest name.

        """

        self.header = sheet.row_values(0)
        self.votes_index = normalize_index(
            self.header,
            normalize_votes)
        self.contest_index = normalize_index(
            self.header,
            normalize_contest)
        self.candidate_index = normalize_index(
            self.header,
            normalize_candidate)
        self.precinct_index = normalize_index(
            self.header,
            normalize_precinct)
        self.jurisdiction_index = normalize_index(
            self.header,
            normalize_precinct)
        try:
            self.party_index = normalize_index(
                self.header,
                normalize_precinct)
        except __HOLE__:
            pass

        for row in xrange(sheet.nrows):
            if self._skip_row(row, sheet):
                continue
            else:
                votes = int(sheet.cell(rowx=row, colx=self.votes_index).value)
                rr_kwargs = self._common_kwargs.copy()
                rr_kwargs.update(self._build_candidate_kwargs(row, sheet))
                rr_kwargs.update(self._build_contest_kwargs(row, sheet))
                rr_kwargs.update({
                    'votes': votes,
                    'ocd_id': "{}".format(self._get_ocd_id(rr_kwargs['jurisdiction']))
                })
                # Get party
                try:
                    party = str(sheet.cell(
                            rowx=row,
                            colx=self.party_index).value).strip()
                    rr_kwargs.update({
                        'party': party
                    })
                except TypeError:
                    """
                    Should this be implemented?
                    Would need to extract the error message from the loop
                    to avoid potentially printing the message over 1,000 times

                    """
                    # logger.info('No party')
                    pass
                try:
                    sh_val = sheet.cell(
                        rowx=row,
                        colx=self.contest_index).value
                    rr_kwargs.update(
                        {'district': '{}'.format(normalize_district(self.header, sh_val, row=False))})
                except KeyError:
                    pass
        RawResult.objects.insert(results)
dataset/ETHPy150Open openelections/openelections-core/openelex/us/wa/load.py/WALoaderExcel.load