我正在使用Workbook.SaveAs方法保存在C#中创建的工作表.XlSaveAsAccessMode参数给了我一些问题.
xlShared将工作表保存在受保护模式下,这样用户就无法使用图表并仔细检查它们.它基本上显示为无法参考数据的死图.
xlExclusive允许用户保存书籍不受保护的访问权限,而不是其他人.其他用户仍然看到死图.
我需要将工作表保存为一种模式,允许每个人查看和检查它,并能够使用图表,连接系列和数据点等.但同时,他们应该无法保存他们的更改覆盖文件.如何使用C#COM Excel API实现此目的?
参考文献 -
http://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.workbook.saveas(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlsaveasaccessmode.aspx
首先使用密码保存文件以防修改 - 您可以在保存文件时在" 另存为"对话框(在对话框底部的" 工具"下拉菜单下)中执行此操作.同时选中Read-only recommended复选框以强制对文件执行只读模式.
当用户打开文件时,Excel将要求输入密码,但没有该密码的用户将被强制进入只读模式.在只读的mdoe中,用户可以对文件进行任何更改,但无法保存原始文件(无论文件系统中的只读属性如何) - 他们只能在文件系统下保存文件的新副本.新名称(或不同文件夹中的相同名称).
要以编程方式使用这些属性保存工作簿,您可以执行以下操作:
oWorkbook.SaveAs ( oWorkbook.Path + @"\Workbook.xls",
Excel.XlFileFormat.xlWorkbookDefault,
missing,
"WritePassword", // password against modification
true, // read-only recommended
false,
Excel.XlSaveAsAccessMode.xlNoChange,
missing,
missing,
missing,
missing,
missing );
Run Code Online (Sandbox Code Playgroud)
您还可以处理WorkBookBeforeSave
事件并使用跟踪信息更新工作簿,以识别原始工作簿的副本.这将有助于将原始文件名下保存的副本保存在其他文件夹中.(我不熟悉这个特定事件,但您甚至可以在处理它时取消保存操作.)
除非您完全控制文件(使用Excel几乎不可能),否则用户将能够复制您的文件,但上述设置至少会强制他们在原始文件完整时保存新副本.这会解决您的问题吗?
归档时间: |
|
查看次数: |
6284 次 |
最近记录: |