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
这里需要一些帮助,
这是我的代码:
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