python - 无法锁定 Excel 工作表中的列 - xlsxwriter
问题描述
我正在尝试使用 xlsx 编写器仅锁定 excel 工作表的几列。作者已经通过获取 panda 数据帧并使用 to_excel 转换它们生成了工作表。
当使用 xlsxwriter 的简单锁定和保护时(在此处找到,整个工作表最终被锁定,而不是我选择的列中的特定单元格。这是我的代码:
writer = pd.ExcelWriter('workbook.xlsx', engine='xlsxwriter')
df2.to_excel(writer, 'Except', index=False, header=False)
df1.to_excel(writer, 'Rec', index=False, header=False)
workbook = writer.book
rec_sheet = writer.sheets['Rec']
except_sheet = writer.sheets['Except']
# adding lock/unlock capabilities
locked_format = workbook.add_format()
locked_format.set_locked(True)
unlocked_format= workbook.add_format()
unlocked_format.set_locked(False)
# unlocking columns that need to remain unlocked
rec_sheet.set_column('AC:AD', None, unlocked_format)
except_sheet.set_column('AC:AD', None, unlocked_format)
# Enable worksheet protection
except_sheet.protect()
rec_sheet.protect()
#lock columns that need to remain locked
rec_sheet.set_column('A:AB', None, locked_format)
except_sheet.set_column('A:AB', None, locked_format)
我希望最终的 workbook.xlsx 有两张表,它们的列被锁定到 AC 列。
解决方案
它应该工作。我在您的示例中添加了一些示例数据框,并且能够写入单元格 AC3(但不是 AB3):
import pandas as pd
df1 = pd.DataFrame([10, 20, 30, 20, 15])
df2 = pd.DataFrame([10, 20, 30, 20, 15])
writer = pd.ExcelWriter('workbook.xlsx', engine='xlsxwriter')
df2.to_excel(writer, 'Except', index=False, header=False)
df1.to_excel(writer, 'Rec', index=False, header=False)
workbook = writer.book
rec_sheet = writer.sheets['Rec']
except_sheet = writer.sheets['Except']
# Adding lock/unlock capabilities.
locked_format = workbook.add_format()
locked_format.set_locked(True)
unlocked_format= workbook.add_format()
unlocked_format.set_locked(False)
# Unlocking columns that need to remain unlocked.
rec_sheet.set_column('AC:AD', None, unlocked_format)
except_sheet.set_column('AC:AD', None, unlocked_format)
# Enable worksheet protection.
except_sheet.protect()
rec_sheet.protect()
# Lock columns that need to remain locked.
rec_sheet.set_column('A:AB', None, locked_format)
except_sheet.set_column('A:AB', None, locked_format)
writer.save()
输出:
推荐阅读
- javascript - 猜测反应中的数字
- json - 有条件地从 Bash 中类似 JSON 的键值对中 grep 值
- flutter - 加载内容时如何在颤动的WebView中显示微调器
- swift - 如何检查文本字段是否存在 Xcode(以编程方式编码)
- bash - convert-im6.q16 (ImageMagick):如何指定命令或选项?
- javascript - postMessage 无法从父级到 iframe
- uwp - 如何在 BackgroundTransfer 中处理进度 DownloadOperation C++/WinRT
- r - 在 R 中使用 trimws 函数后如何包含所有数据?
- flutter - 在抽象类中访问 TextFormField 控制器
- scala - 使用 Gradle 为 Gatling 构建可执行 Jar