是否可以使用pandas将.xlsx保存为只读?

mwkjh3gx  于 2023-03-28  发布在  其他
关注(0)|答案(5)|浏览(158)

感觉应该有一种方法可以使用pandas的to_excel函数或XLSXwriter模块将.xlsx文件保存为只读。
我看了这两份文件,没有运气。
to_excelhttps://pandas.pydata.org/pandasdocs/stable/generated/pandas.DataFrame.to_excel.html
XLSXwriterhttp://xlsxwriter.readthedocs.io/workbook.html
在Pandas体内是否有其他方法实现这一点?

w8biq8rn

w8biq8rn1#

不确定它是否可以用pandas完成,但你可以在创建它之后将其设置为只读。

import os
from stat import S_IREAD, S_IRGRP, S_IROTH
os.chmod(filename, S_IREAD|S_IRGRP|S_IROTH)
2cmtqfgy

2cmtqfgy2#

不过,如果你想用XLSXwriter

from xlsxwriter.workbook import Workbook
...
book = Workbook('file/path')
sheet = book.add_worksheet('worksheet_name')

# Add separate format for unlocked cells
unlocked = book.add_format({'locked': 0})
# Protect all cells in your sheet by default
sheet.protect()
...
# Write cell, locked by default
sheet.write(row_number, column_number, data)
# Write another cell, unlock it
sheet.write(row_number, column_number, data, unlocked)
...
book.close()
lmvvr0a8

lmvvr0a83#

与@Alex-Zisman类似的答案,但对于Windows:

import win32con, win32api, os

file_path = 'path/to/file.xlsx'
win32api.SetFileAttributes(file_path, win32con.FILE_ATTRIBUTE_READONLY)
koaltpgm

koaltpgm4#

以下是使用xlsxwriter作为引擎时使用Pandas的一种方法:

import pandas as pd

# Create a Pandas dataframe from some data.
df = pd.DataFrame({"Data": [10, 20, 30, 20, 15, 30, 45]})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter("pandas_read_only.xlsx", engine="xlsxwriter")

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name="Sheet1")

# Set the Excel output file as "Read-only Recommended".
writer.book.read_only_recommended()

# Close the Pandas Excel writer and output the Excel file.
writer.close()

打开文件时的输出:

qvtsj1bj

qvtsj1bj5#

请遵循以下指南。我认为它可能给予回答您的问题:
导入xlsxwriter
workbook = xlsxwriter.Workbook('file.xlsx')
工作表=工作簿.add_worksheet()
workbook.read_only_recommended()
workbook.close()

read_only_recommended()-此方法可用于设置保存文件时可用的Excel“只读推荐”选项。这将为文件的用户提供以“只读”模式打开文件的选项。这意味着对文件的任何更改都不能保存回同一文件,必须保存到新文件。

相关问题