Python 对 excel 电子表格的 xlrd 迭代遗漏了单元格值

Python xlrd iteration over excel spreadsheet leaves out cell values

这里需要一些帮助,

这是我的代码:

   import xlutils
   import xlrd
   import os
   import sys
   datafile = r'C:\someexcelfileediting.xlsx'
   workbook = xlrd.open_workbook(datafile)
   stone = workbook.sheet_by_name(input('What is the name of the sheet you are trying to reference?  ').upper())
   paper = workbook.sheet_by_name(input('what sheet would you like to check?  ').upper())
   def check_Base():
   set2 = set()
   for row in range (0, paper.nrows):    
       for col in range(0, paper.ncols):       
           set2.add(paper.cell_value(row, col))
   print (len(set2))
   print (set2)
check_Base()

我最终得到的是正在迭代的 excel sheet 的 91 个值中的 79 个,我不明白为什么要排除文件中的 12 个条目。数据似乎没有从不同行和列中省略其随机值的模式。任何帮助,将不胜感激。

谢谢, 会

A set 将为您提供一个无序的唯一值集合。如果您的电子表格中有重复的单元格,则只有第一个单元格会添加到集合中,其余单元格将被丢弃。

根据您的评论,听起来您只是在进行一些调试,但如果您真的需要计算已解压的单元格数量,一种选择是先将它们 append 添加到列表中然后稍后将其转换为一组。

mylist = []
for row in range (0, paper.nrows):    
    for col in range(0, paper.ncols):       
        mylist.append(paper.cell_value(row, col))

print len(mylist) # 91

myset = set(mylist)

print len(myset) # 79

我会说,与其创建一个列表然后将其转换为一个集合,不如先初始化一个空集合并继续向其中添加元素。它会自动处理设置的功能。这将更有效。

myset= set()
for row in range (0, paper.nrows):    
    for col in range(0, paper.ncols):       
        myset.add(paper.cell_value(row, col))

print len(myset) # 79