generated excel sample 附件是我使用xlsxwriter生成的Excel。
带有灰色标题的列被锁定,而带有黑色标题的列未被锁定。 这样做的方式是,我从程序的输入中获得一个指示符,该指示符告诉我应该锁定或解锁特定的列以及需要解锁的行数。
我创建了一个地图,其中要解锁的标头为键,要解锁的范围为值,然后保护整个图纸并解锁范围。下面是代码片段:
cell_lock_range是具有标题名称和要解锁范围的字典。
sheet.protect('',{'insert_columns':是的, 'delete_columns':是的, 'format_columns':是的, 'format_cells':是的, 'select_locked_cells':否, “ select_unlocked_cells”:是 })
for name, range in self.cell_lock_range.iteritems():
r_val = range.split(':')
if r_val and len(r_val) > 2:
low = int(r_val[1])
cl = r_val[0]
hi = int(r_val[2])
while low <= hi:
cell_to_unlock = cl+str(low)
sheet.write(cell_to_unlock, ' ', self.unlocked)
name_r = name.split('-')
if name_r and name_r is not None and len(name_r) > 1:
name = name_r[1];
xml_name = name_r[2];
if low == 4:
sheet.write(cell_to_unlock, name, self.unlocked_format_bold)
if low == 5:
sheet.write(cell_to_unlock, xml_name, self.attribute_format)
low += 1
使用这种方法,我面临两个问题,如果我插入一个选择未锁定列的新列,则新列将添加到所选列的左侧,并且该列将使用其右侧的属性。如果它的右侧具有锁定列,则新插入的列也将被锁定,并且无法进行编辑。
尽管我在受保护的工作表中将insert_column设置为true,但是只有一部分未解锁的单元格。例如10行。因此,当我尝试删除插入的行时说工作表已受保护,因此无法删除该列。我只能撤消列插入。
我的问题是,不是保护整个工作表,有没有办法锁定一系列单元格?那应该可以解决我的问题。
谢谢。