[英]How to disable cut/copy option for all cells in Excel using C# code?
/ *****- 编辑- 解决方案最终解决方案真的很奇怪。 我正在使用的Interop程序集包含禁用单元格选择的方法( App.EnableSelection
)。 但这没有用。 我安装了MSOffice 2010(最初使用的是2007)。 现在,安装了新版本的Assembly,并且根本没有更改代码,Excel表格在Excel2007和Excel2010上的行为均符合预期。 我仍然无法理解在组装级别发生的情况,但是最终解决了我的问题。 :) ***** /
我正在编写一个WPF应用程序,该程序以编程方式生成一个excel文件(这是一份工资报告)。 我已使用以下代码保护了文件
myWorkSheet.Protect(Password);
该保护工作正常,但是,我不希望用户能够将任何单元格数据复制到另一张纸上。 我尝试使用下面的代码,但是它不起作用
myWorkSheet.Application.CutCopyMode = (Excel.XlCutCopyMode)0;
我仍然能够复制单元格数据。 怎么了?
注意:环境是.NET Framework 4.5,MSOffice 2007,Microsoft.Office.Interop程序集版本1.6.0.0
真正奇怪的是Application.CutCopyMode
具有类型False
, xlCut
和xlCopy
[1]: https : xlCopy
我正在使用的程序集版本不包含False
类型。 我应该升级到Office 2010吗?
我使用的COM参考是Microsoft Office 12.0对象库版本1.6。
建议我锁定单元格并禁用对它们的选择,以防止用户复制单元格数据。 这是代码,但是不起作用。 不知道为什么。
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
//Adding some data to the sheet, modifying cells alignments,adding border,headers
xlWorkSheet.UsedRange.Cells.Locked = true;
xlWorkSheet.Protect("Lomesh", misValue, true, misValue, true, misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue);
xlWorkSheet.EnableSelection = Excel.XlEnableSelection.xlUnlockedCells;
上面的代码不起作用。 我仍然能够复制单元格数据。
//Saving using save dialog
xlWorkBook.SaveCopyAs(path);
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
仅保护板料还不够。 您还必须:
(1)锁定单元格(如果尚未锁定),以及
(2)将保护设置为不启用对锁定单元格的选择:
myWorkSheet.EnableSelection = xlUnlockedCells
这将防止用户选择锁定的单元格,从而阻止它们复制它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.