如何在Excel中使用C#代码禁用所有单元格的剪切/复制选项?
/ ***** – EDIT– 解决scheme最终解决scheme真的很奇怪。 我使用的Interop程序集包含禁用单元格select( App.EnableSelection
)的方法。 但它不起作用。 我安装MSOffice 2010(最初使用2007年)。 现在,安装了新版本的程序集,并且完全不需要更改代码,Excel表格在Excel2007和Excel2010上的performance都与预期一致。 我仍然无法理解大会上发生的事情,但终于解决了我的问题。 🙂 ***** /
我正在写一个编程生成一个Excel文件(这是一个薪水报告)的WPF应用程序。 我使用下面的代码保护了文件
myWorkSheet.Protect(Password);
保护工作正常,但我不希望用户能够将任何单元格数据复制到另一个工作表。 我试过使用下面的代码,但它不工作
myWorkSheet.Application.CutCopyMode = (Excel.XlCutCopyMode)0;
我仍然能够复制单元格数据。 出了什么问题?
注意:环境是.NET Framework 4.5,MSOffice 2007,Microsoft.Office.Interop程序集版本1.6.0.0
真奇怪的是Application.CutCopyMode
types为False
, xlCut
和xlCopy
[1]: https : xlCopy
我正在使用的程序集版本不包含False
types。 我应该升级到Office 2010吗?
我正在使用的COM参考是Microsoft Office 12.0对象库版本1.6。
我已经build议locking单元格并禁用它们的select,以防止用户复制单元格数据。 这是代码,但它不起作用。 不知道为什么。
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)locking单元格,如果它们尚未被locking,则
(2)将保护设置为不启用locking单元的select:
myWorkSheet.EnableSelection = xlUnlockedCells
这将阻止用户selectlocking的单元格,从而防止他们能够复制它们。