Я защитил лист Excel с помощью модуля записи xlsx, чтобы пользователь не мог удалять, изменять или вставлять какие-либо строки или столбцы, и предоставил пользователям несколько вариантов, таких как сводная таблица, сортировка, форматирование.Все хорошо, но опция сводной таблицы не включается на листе.Я делюсь фиктивным кодом ниже.
anomalies = pd.DataFrame({'A' : np.random.randint(0, 100, 10),
'B' : np.random.randint(10, 100, 10),
'C' : np.random.randint(0, 100, 10),
'D' : np.random.randint(10, 100, 10)})
anomalies['Status'] = 'Pending'
writer = pd.ExcelWriter('anomalies.xlsx', engine = 'xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
anomalies.to_excel(writer, sheet_name='Sheet1')
# Get the xlsxwriter objects from the dataframe writer object.
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# Create some cell formats with protection properties.
locked = workbook.add_format()
locked.set_locked(True)
unlocked = workbook.add_format()
unlocked.set_locked(False)
# Format the worksheet to unlock all cells.
worksheet.set_column(anomalies.shape[1], anomalies.shape[1], None, unlocked)
worksheet.set_column(0,0, anomalies.shape[1], None, {'hidden' : 1})
worksheet.autofilter(0, 0, 0,anomalies.shape[1]) # Same as above.
# Turn worksheet protection on.
options = {
'objects': True,
'scenarios': True,
'format_cells': True,
'format_columns': True,
'format_rows': True,
'insert_columns': False,
'insert_rows': False,
'insert_hyperlinks': False,
'delete_columns': False,
'delete_rows': False,
'select_locked_cells': True,
'sort': True,
'autofilter': True,
'pivot_tables': True,
'select_unlocked_cells': True,
}
worksheet.protect(options = options)
workbook.close()
writer.save()