我正在使用pyexcel自动打开excelsheet,操纵其中的一些数据并再次保存。 然而,它只操纵第一个命令,似乎忽略了其他命令。
我使用
访问我的文件book = pyexcel.get_book(file_name=file_to_be_manipulated)
而file_to_be_manipulated保存了文件的链接
然后我把我的床单放在像
这样的元组中sheets = ('first_sheet', 'second_sheet', etc.)
并通过
访问它们sheet_name = book[sheets[sheet_index]]
迭代我想要操作的单元格我访问像
这样的单元格HERE 一切正常,只要其中有内容并且“删除”前两列中的所有内容,我就会迭代第二列。 这完全没问题。
row = 5
column = 2
column_to_be_deleted = 0
second_column_to_be_deleted = 1
sheet_name = book[sheets[sheet_index]]
while sheet_name[row,column] != None:
row_to_be_deleted = row
second_row_to_be_deleted = row
sheet_name[row_to_be_deleted, column_to_be_deleted] = ""
sheet_name[second_row_to_be_deleted, second_column_to_be_deleted] = ""
row += 1
HOWEVER 奇怪的是,我只是想将第2列和第3列从'empty'操作为'Default'和'x' 但这不起作用。第一列中的“删除”工作正常,但其他两个操作无效,我无法弄清楚原因。
row = 5
column = 1
column_to_be_deleted = 0
column_to_set_to_default = 2
column_to_set_to_something = 3
sheet_name = book[sheets[sheet_index]]
while sheet_name[row,column] != None:
row_to_be_deleted = row
row_to_set_to_default = row
row_to_set_to_something = row
sheet_name[row_to_be_deleted, column_to_be_deleted] = ""
sheet_name[row_to_set_to_default, column_to_set_to_default] = "Default"
sheet_name[row_to_set_to_something, column_to_set_to_something] = "x"
row += 1
如果某些字符串已经在第2列和第3列中,它就可以正常工作,那么它可以正常工作。
但是,在这里,我想将第11行第5行的值更改为“1”,只删除第一列,就像在其他示例中一样。这里删除工作正常,但第11行第5行中的'0'不会更改为'1'
if sheet_index == 13: #ORGANISATIONS SHEET, L6 MUST BE SET TO 1
row = 5
column = 1
column_to_be_deleted = 0
column_to_set_to_one = 11
row_to_set_to_one = 5
sheet_name = book[sheets[sheet_index]]
sheet_name[row_to_set_to_one, column_to_set_to_one] = "1"
while sheet_name[row,column] != None:
row_to_be_deleted = row
sheet_name[row_to_be_deleted, column_to_be_deleted] = ""
row += 1
为什么这样,对我来说似乎是随机的,哪个命令被执行而哪些没有。
答案 0 :(得分:1)
问题似乎在于pyexcel如何看待Excel-Sheets。 Pyexcel首先查看工作表与最后一个数据输入的位置有多大。
然后它会创建一个这么大的数组,如果你想操纵这个数组之外的数据,它不会抛出错误,但根本不会做它所要求的。
因此,如果您想要在没有填充数据的列中操作数据,您必须创建此列(如何执行此操作,请参阅pyexcel中的readthedocs)或首先在其中手动输入一些数据。