如何在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.CutCopyModetypes为FalsexlCutxlCopy [1]: https : xlCopy

我正在使用的程序集版本不包含Falsetypes。 我应该升级到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的单元格,从而防止他们能够复制它们。