1

在阅读大量 Excel 电子表格时,我需要关于选择工作表的建议。我工作的公司已经拥有一个包含 100 多个 Excel 电子表格的大型数据库,我正在其中搜索特定工作表中的值。问题是电子表格的名称和索引各不相同,尤其是涉及旧文档时。我都试过了sheet_by_idex(6)sheet_by_name('name'),但我似乎做错了。

搜索时sheet_by_index(6),问题是某些文档中的索引发生了变化,例如从索引 5 到索引 6。另一个问题是它们也有隐藏的工作表,我不确定是否会中断或只是成为最后一个索引。

搜索时sheet_by_name('name'),问题是工作表名称在大多数情况下称为“Ship Res. Coeff WL1”,但在其他电子表格中也可能称为“Ship Res. Coeff WL2B”。除此之外,每个电子表格中都有一个类似的表格,名称为“Ship Res. Coeff WL1”(如果是这些文件之一,则为 WL2B)

这是我的带有try,except函数的代码,让我注意到工作表的选择是问题所在。

def find_Froudnumbers():
        Fdict = {}
        for filename in file_list:
            try:
                wb = xlrd.open_workbook(os.path.join(start_dir, filename))
                sheet = wb.sheet_by_index('6')  
                 Teljar = 25
                Flist = []
                for Frouden in xrange(25, sheet.nrows):
                    Frouden = sheet.cell_value(int(Teljar), 2)
                    Flist.append(Frouden)
                    Teljar += 1
                 Fdict[filename] = [Flist]
            except xlrd.XLRDError:
                print 'Problem with finding Froudenumbers from:', filename
        return Fdict       # map(str.strip(' '), Frouden)
     Fdict = find_Froudnumbers()
    print Fdict

如果需要进一步的解释,请不要犹豫。非常感谢任何建议。

4

1 回答 1

1
from xlrd import open_workbook

def find_Froudnumbers():
        Fdict = {}
        for filename in file_list:
            try:
                wb = xlrd.open_workbook(os.path.join(start_dir, filename))

                # this will have a problem if there is no similar sheet

                srch_string = 'Ship Res. Coef'
                for sheet_index in range(wb.nsheets):
                    first_sheet = wb.sheet_by_index(sheet_index)
                    second_sheet = wb.sheet_by_index(sheet_index + 1)
                    if (srch_string in first_sheet.name and
                        srch_string in second_sheet.name):

                        # do something with second_sheet

                 Teljar = 25
                Flist = []
                for Frouden in xrange(25, sheet.nrows):
                    Frouden = sheet.cell_value(int(Teljar), 2)
                    Flist.append(Frouden)
                    Teljar += 1
                 Fdict[filename] = [Flist]
            except xlrd.XLRDError:
                print 'Problem with finding Froudenumbers from:', filename
        return Fdict       # map(str.strip(' '), Frouden)
     Fdict = find_Froudnumbers()
    print Fdict

这应该很接近,不幸的是我没有时间测试它,但要小心,因为这只有在它之前有一本类似的书才有效......也许你可以调整它更灵活一点

于 2013-08-13T12:35:06.240 回答