Python xlwt - 如何将列设置为只读(单元格保护)

5

在Python的xlwt中,有没有一种方法可以使特定的单元格只读/写保护?

我知道有一个cell_overwrite_ok标志,它不允许覆盖单元格的内容(所有单元格),但是是否可以基于单元格来完成此操作。

谢谢, Sun

1个回答

9

Excel单元格具有默认启用的锁定属性。但是,仅当工作表的保护属性也设置为True时,才会调用此属性。如果工作表未受保护,则锁定属性将被忽略。

因此,您的问题不应该最好以“如何使单元格只读”的形式提出。相反,问题是在保护工作表后如何使单元格可编辑。

...这里是答案:

from xlwt import Workbook, Worksheet, easyxf

# ...

# Protect worksheet - all cells will be read-only by default
my_worksheet.protect = True  # defaults to False
my_worksheet.password = "something_difficult_to_guess"

# Create cell styles for both read-only and editable cells
editable = easyxf("protection: cell_locked false;")
read_only = easyxf("")  # "cell_locked true" is default

# Apply your new styles when writing cells
my_worksheet.write(0, 0, "Can't touch this!", read_only)
my_worksheet.write(2, 2, "Erase me :)", editable)

# ...

单元格样式(easyxf类)也可以用于声明背景颜色、字体加粗等,非常实用。祝好!

如果我需要对整个Excel文件进行密码保护怎么办? - Noopur Phalak
实际上,我需要将一个Spark DataFrame 存储为Excel文件格式,并使其中的几列为只读属性。你能指导我如何做吗? - kanishk kashyap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接