Pyexcel没有操纵我告诉它的细胞

时间:2015-09-28 09:12:41

标签: python excel python-3.x

我正在使用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

为什么这样,对我来说似乎是随机的,哪个命令被执行而哪些没有。

1 个答案:

答案 0 :(得分:1)

问题似乎在于pyexcel如何看待Excel-Sheets。 Pyexcel首先查看工作表与最后一个数据输入的位置有多大。

然后它会创建一个这么大的数组,如果你想操纵这个数组之外的数据,它不会抛出错误,但根本不会做它所要求的。

因此,如果您想要在没有填充数据的列中操作数据,您必须创建此列(如何执行此操作,请参阅pyexcel中的readthedocs)或首先在其中手动输入一些数据。